Issues with python hex()



我有 json 文件如下

{
"devices"  :[
{
"Manufacturer name": "Sony",
"vendor_id":"8087" ,
"product_id" : "07da"
},
{
"Manufacturer name": "Sandisk",
"vendor_id": "1d6b",
"product_id" : "0002"
},
{
"Manufacturer name": "Chicony Electronics",
"vendor_id": "04f2",
"product_id" : "b381"
}
]
}

此 json 文件包含连接到我的笔记本电脑的 USB 设备的供应商和产品 ID。我正在检查USB设备是否连接到笔记本电脑或未使用此json文件。供应商和产品 IDhex。由于json不能使用hex,我以字符串格式编写了这些值。我实际上正在使用python的pyusb模块来检查设备的连接性,如下所示

import usb.core
def get_hex(hex_str):
hex_int = int(hex_str, 16)
return hex(hex_int)
vendor_id = get_hex("8087")
product_id = get_hex("07da")
dev = usb.core.find(idVendor=vendor_id, idProduct=product_id)
if dev is None:
print "Disconnected"
else:
print "Connected"

但是当我运行此代码时,我收到打印消息"Disconnected"这里实际上的问题是usb.core.find()函数需要int值,但函数返回的值get_hex()string。一旦将上述代码中的行dev = usb.core.find(idVendor=vendor_id, idProduct=product_id)更改为dev = usb.core.find(idVendor=0x8087, idProduct=0x07da)。上面的代码工作正常。请让我知道如何从get_hex()返回值int.

问题是您将十六进制字符串转换为 int,然后又转换回十六进制字符串。只需将其转换为 int 后返回即可。最好将函数重命名为get_int,因为您只是将其转换为 int

def get_int(hex_str):
return int(hex_str, 16)
vendor_id = get_int("8087")
product_id = get_int("07da")
dev = usb.core.find(idVendor=vendor_id, idProduct=product_id)

相关内容

  • 没有找到相关文章

最新更新