guo*_*guo 2 python string hex data-conversion
我的python脚本通过串行线路获取并发送单词。每个字都是带符号的24位值,以十六进制字符串形式接收。现在,脚本应该将这些字符串转换为整数,对其进行一些计算,然后以相同的格式发送回去。我的问题是,如何进行此转换
Examples
Rx string -> calc int
012345 -> 74565
fedcba -> -74566
calc int -> Tx string
74565 -> 012345
-74566 -> fedcba
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
def str_to_int(s):
i = int(s, 16)
if i >= 2**23:
i -= 2**24
return i
def int_to_str(i):
return '%06x'%((i+2**24)%2**24)
Run Code Online (Sandbox Code Playgroud)
检测结果:
In [36]: str_to_int('012345')
Out[36]: 74565
In [37]: str_to_int('fedcba')
Out[37]: -74566
In [38]: int_to_str(74565)
Out[38]: '012345'
In [39]: int_to_str(-74566)
Out[39]: 'fedcba'
Run Code Online (Sandbox Code Playgroud)
参考:在Python 3.2中用十六进制字符串对int进行签名?