ValueError:基数为 16 的 int() 的文字无效:带有 GATT 的 Python 中的 b'0f 18 '

问题描述 投票:0回答:1

我正在使用 Python 和 GATT 库 pxexpect 来处理一些数据,但在尝试将十六进制值转换为整数时遇到问题。这是我看到的具体错误:

print(int(gatt.before, 16)),
          ^^^^^^^^^^^^^^^^^^^^ 
ValueError: invalid literal for int() with base 16: b'0f 18 '

这是产生错误的代码..

print(int(gatt.before, 16)),
print("%")

变量 gatt.before 包含值 b'0f 18 '。看来这是一个字节对象,表示带空格的十六进制值。然而,以 16 为基数的 int() 需要一个不带空格的字符串

我尝试过的:

  • 删除空格: 我尝试去掉空格,但这并没有解决问题。
  • 解码: 我使用 .decode('utf-8') 将字节对象转换为字符串,但这也没有帮助。
python python-3.x gatt bluetooth-gatt gatttool
1个回答
0
投票
# Assuming gatt.before is a byte string returned from a GATT command. Here represented by gatt_before
gatt_before = b'0f 18 '

# Decode the byte string to a regular string
hex_string = gatt_before.decode('utf-8')

# Remove spaces and any other non-hexadecimal characters
cleaned_hex_string = ''.join(hex_string.split())

# Convert the cleaned-up string to an integer
integer_value = int(cleaned_hex_string, 16)

print(integer_value)
© www.soinside.com 2019 - 2024. All rights reserved.