在Python中将字节转换为整数

2 投票
2 回答
2690 浏览
提问于 2025-04-17 09:03

我需要一些帮助,想通过串口通信保留一个整数类型的数据。现在我的设置是一个Arduino微控制器在读取一个温度传感器,这个传感器通过一个XBee模块输出一个浮点数,比如说76.82。

XBee接收器连接到我的电脑上,电脑里有一个Python程序,它使用串口模块的readline()方法来读取数据。但是,当我调用readline()时,我收到的是b'76.66\r\n'。我该怎么去掉所有的字符,只保留数字,并保持它的原始数据类型呢?

这是我的Python代码:

import serial

ser = serial.Serial(6)

while True:
    x = ser.readline();
    print(x)

这是我的Arduino代码:

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

DeviceAddress Thermometer = { 0x28, 0x36, 0x0F, 0xB0, 0x02, 0x00, 0x00, 0xF0 };

void setup(void)
{
    Serial.begin(9600);

    sensors.begin();
    sensors.setResolution(Thermometer, 12);
}

void printTemperature(DeviceAddress deviceAddress)
{
    float tempC = sensors.getTempC(deviceAddress);
    Serial.println(DallasTemperature::toFahrenheit(tempC));
}

void loop(void)
{
    delay(5000);
    sensors.requestTemperatures();

    printTemperature(Thermometer);
}

2 个回答

3

要把一个数转换成浮点数(小数),可以使用下面的代码:

float(b'76.66\r\n')

如果你想把这个小数向下取整变成整数,可以用这段代码:

math.floor(float(b'76.66\r\n'))
4

你是在找这个吗?

>>> a = b'76.66\r\n'
>>> float(a)
76.66

编辑:如果你说的 "保留原始数据类型" 是指“保持为字符串”:

>>> a.strip()
'76.66'

撰写回答