我有下面的字节数组
>>> string_ba
bytearray(b'4\x00/\t\xb5')
它很容易转换成十六进制字符串,下面两行:
^{pr2}$那个回报
>>> hex_string.lower()
'34002f09b5'
这是意料之中的。(这是RFID卡签名)
我通过执行上述操作将其转换为十进制,然后用下一行从十六进制字符串转换为十进制字符串(用零填充)。我的字符串限制为10个字符,因此我被迫删除字符串中的前2个字符,以便将其转换为最多10个字符的十进制数。在
dec_string = str(int(hex_string[2:], 16)).zfill(10)
>>> dec_string
'0003082677'
这是正确的,因为我用一个在线转换器(hex:002f09b5,dec:3082677)测试了这一点 问题是,如果有一种方法可以跳过从bytearray到hex_字符串的转换,以获得十进制字符串。换句话说,直接从bytearray到dec\u string
这将在python2.7.15上运行。在
>>> sys.version
'2.7.15rc1 (default, Apr 15 2018, 21:51:34) \n[GCC 7.3.0]'
我尝试从bytearray中删除第一个元素,然后将其直接转换为字符串并进行连接。但这并不能提供预期的结果。在
string_ba = string_ba[1:]
test_string = [str(x) for x in string_ba]
test_dec_string = ''.join(test_string).zfill(10)
>>> test_dec_string
'0000479181'
重复这个问题,有没有办法直接从bytearray转到十进制字符串
一个由n位组成的数字(我们称之为n)写为:
Dn-1Dn-2Dn-3…D2D10(其中每个Di都是基数B中的一个数字)
其值可根据以下公式计算:
VX=σin=-01(Bi*Di)(注意,在本例中,数字是从右向左遍历的——遍历感不影响最终值)。在
例如,number2468(B10)=100*8+101*6+102*4+103*2(=8+60+400+2000)。在
ASCII字符串实际上是一个基数256(0x100)的数字,其中每个字符(字节)都是一个数字。在
以下是基于上述情况的另一种选择:
代码.py:
输出:
可以使用结构库将bytearray转换为decimal。https://codereview.stackexchange.com/questions/142915/converting-a-bytearray-into-an-integer也许能帮你
相关问题 更多 >
编程相关推荐