首页 > 编程问答 >ValueError:在带有 GATT 的 Python 中,以 16 为基数的 int() 的文字无效:b'0f 18 '

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

时间:2024-07-27 08:48:40浏览次数:7  
标签:python python-3.x gatt bluetooth-gatt gatttool

我正在使用 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') 将字节对象转换为字符串,但这也没有帮助。

你几乎要找到解决方案了!问题在于空格和 b 前缀,表明它是字节字面量。你需要执行以下操作:

  1. 删除空格: 你可以用 replace() 方法来做到这一点。
  2. 将字节解码为字符串: 你可以使用 .decode('utf-8') 来做到这一点,就像你尝试过的那样。
  3. 将字符串转换为整数: 你可以使用 int(your_string, 16) 来做到这一点,其中 your_string 是解码后的字符串。

代码:

hex_string = gatt.before.decode('utf-8').replace(" ", "")  # 删除空格并解码
int_value = int(hex_string, 16)  # 将十六进制字符串转换为整数
print(int_value)
print("%")

解释:

  1. gatt.before.decode('utf-8').replace(" ", "")
  2. gatt.before.decode('utf-8') 将字节对象 gatt.before 解码为字符串。
  3. .replace(" ", "") 删除字符串中的空格。

  4. int(hex_string, 16)

  5. 将经过清理的十六进制字符串 ( hex_string ) 转换为整数,基数为 16。

这段代码将首先清理十六进制值,删除空格和 b 前缀,然后将其转换为整数。

如果你仍然遇到问题,请提供 gatt.before 变量的完整输出以及用于获取数据的库或设备的更多上下文信息。

标签:python,python-3.x,gatt,bluetooth-gatt,gatttool
From: 78800256

相关文章

  • 我看不懂这个python脚本?
    用于加载.dat文件的Python脚本importcsvfromdjango.core.management.baseimportBaseCommandfromrecommender.modelsimportUser,Artist,Tag,UserArtist,UserTaggedArtist,UserFriendimportosfromdjango.confimportsettings#Definethepathtothedatab......
  • 使用操作系统工具通过 Python 3 扫描图像
    我正在使用python构建一个应用程序,它需要能够连接到扫描仪并处理生成的pdf/jpeg/其他文件中的数据。我一直在尝试找到一种连接到扫描仪以请求扫描的方法,但没有真正的进展。我已经查看了我能找到的所有选项,包括这个答案:我想连接我的图像扫描仪程序我发现的大多......
  • Python,pandas从字符串中解析数字和字符串
    在Python中,我想解析一个字符串并将数字部分(可能有也可能没有小数点)作为浮点数返回,并将后缀作为字符串返回。示例为:7.1英寸->7.1,英寸7.1”->7.1,“7英寸->7.0,英寸-10dB->-10.0,dB-10.2dB->-10.2,dB数字部分和后缀之间没有空格。另外,我想将其应......
  • 如何在 Python 中加载站点的所有资源,包括 AJAX 请求等?
    我知道如何使用Python请求网站并读取其文本。过去,我曾尝试使用像BeautifulSoup这样的库来发出对网站上链接的所有请求,但这并没有得到看起来不像完整URL的内容,例如AJAX请求和大多数对原始域(因为“http://example.com”将丢失,更重要的是,它不是<ahref='url'>......
  • 使用Python进行PDF旋转
    使用python旋转扫描的pdf后,它工作得很好,但将pdf发送给第三方后,第三方仍然将pdf检测为90度pdf有什么办法可以解决旋转和这个问题importPyPDF2withopen('input.pdf','rb')asfile:#CreateaPDFreaderobjectreader=PyPDF2.PdfReader(file)......
  • Python win32serviceutil QueryServiceStatus:返回值是什么意思?
    我正在学习使用pywin32,并尝试在64位Python3.6.4上使用win32serviceutil模块以下代码:importwin32serviceutilasserviceserviceStatus=service.QueryServiceStatus("WinDefend")print(serviceStatus)返回以下元组:(16,4,197,0,0,0,0)我对wind......
  • Python request-html 未下载 Chromium
    importrequestsfrombs4importBeautifulSoupfromrequests_htmlimportHTMLSessionurl="https://dmarket.com/ingame-items/item-list/csgo-skins?title=recoil%20case"sesion=HTMLSession()response=sesion.get(url)response.html.render()soup=B......
  • VS Code 不改变 python 环境
    我正在使用VS-Code和anaconda环境作为python解释器。我通过ctrl+shift+`选择准确的anaconda基础环境,它也反映在vscode的下侧面板中。但是,当我检查python版本时,它显示我系统的默认python环境3.7.9如果您看到下面的截图,anaconda环境是3.......
  • 使用 Python 打开保存为 Parquet 文件中元数据的 R data.table
    使用R,我创建了一个Parquet文件,其中包含一个data.table作为主要数据,另一个data.table作为元数据。library(data.table)library(arrow)dt=data.table(x=c(1,2,3),y=c("a","b","c"))dt2=data.table(a=22222,b=45555)attr(dt,&......
  • Python 需要 Windows 长路径
    我尝试运行此安装:pip3installmsgraph-sdk它给了我这个错误:它说我需要使用此链接启用Windows长路径:https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-versi......