【问题标题】:Issues with python hex()python hex() 的问题
【发布时间】:2019-02-05 00:57:43
【问题描述】:

我有如下的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。我正在使用这个 json 文件检查 USB 设备是否连接到笔记本电脑。供应商和产品 ID 位于 hex。由于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)。上面的代码可以正常工作。请告诉我如何在int 中从get_hex() 返回值。

【问题讨论】:

标签: python python-2.7 pyusb


【解决方案1】:

问题是您将十六进制字符串转换为 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)

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 2012-11-02
    • 2018-02-25
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2012-04-03
    相关资源
    最近更新 更多