从\xff转换为0x

2024-09-30 10:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从ADC读取二进制输入寄存器,我得到的输入如下: data = '\xff\xff\xff\xff' , data[0] = '\xff'我必须将数据转换为2的补码fix8_7(LSB的第7位中的固定二进制点),我使用以下函数来实现:

def twos_comp(val, bits):
    # Compute the 2's compliment of int value val
    if( (val&(1<<(bits-1))) != 0 ):
        val = val - (1<<bits)
    return val

def fix8_7(val):
    # Take a signed int of 8 bit an pass it to fix8_7 (fixed binary point in 7th LSB)
    val = val / 128.0
    return val 

使用方法是:

^{pr2}$

但是我遇到了一个错误,因为我需要输入一个十六进制值,比如0xff或ff no\xff,我该如何解决这个问题??在


Tags: of数据datareturndef二进制val寄存器
2条回答

如果您正在寻找将\xff更改为0xff的方法,只需使用ord和{}函数,如下所示

data = '\xff\xff\xff\xff'
data = map(hex, map(ord, data))
print data
# ['0xff', '0xff', '0xff', '0xff']

您的twos_comp(val, bits)函数要求参数是整数。您可以直接获得整数,而无需先使用^{}将输入转换为'0xff'字符串:

>>> data = '\xff\xff\xff\xff'
>>> b = bytearray(data)
>>> b[0] == 0xff
True

相关问题 更多 >

    热门问题