将成对的以 10 为底的整数转换为 python 中的 ascii 字符的最佳方法
Best way to Convert pairs of base 10 integers to ascii characters in python
我正在使用串行接口与一台测试设备通话。设备的两个字母 ascii ID 在特定寄存器中被编码为以 10 为底的整数。每对整数都需要转换为 ascii 字符。我的问题是进行这种转换的最佳方法是什么。我使用了下面的方法,但对于这样一个简单的任务来说似乎相当复杂。
示例
输入:5270
期望的输出:'4F'
(52 和 70 的 ascii 值)
get the raw register value
>>> result =f4.read_register(0,)
>>> result
5270
convert the integer into a list of chars
>>> chars = [i for i in str(result)]
join the pairs together
>>> pairs = [''.join((chars[x], chars[x+1])) for x in xrange(0,len(chars),2)]
>>> pairs
['52', '70']
>>> pairs = [chr(int(x)) for x in pairs]
>>> pairs
['4', 'F']
加一点数学。
/
- 整数除法
%
- 模运算符
代码
>>> num = 5270
>>> pairs = [chr(num/100),chr(num%100)]
>>> pairs
['4', 'F']
并匹配所需的输出
>>> ''.join(pairs)
'4F'
除了@BhargavRao 的回答,您还可以使用 divmod
内置函数:
num = 5270
''.join(map(chr, divmod(num, 100)))
# '4F'
您还可以使用字符串格式:
'{:c}{:c}'.format(*divmod(num, 100))
# '4F'
我正在使用串行接口与一台测试设备通话。设备的两个字母 ascii ID 在特定寄存器中被编码为以 10 为底的整数。每对整数都需要转换为 ascii 字符。我的问题是进行这种转换的最佳方法是什么。我使用了下面的方法,但对于这样一个简单的任务来说似乎相当复杂。
示例
输入:5270
期望的输出:'4F'
(52 和 70 的 ascii 值)
get the raw register value
>>> result =f4.read_register(0,)
>>> result
5270
convert the integer into a list of chars
>>> chars = [i for i in str(result)]
join the pairs together
>>> pairs = [''.join((chars[x], chars[x+1])) for x in xrange(0,len(chars),2)]
>>> pairs
['52', '70']
>>> pairs = [chr(int(x)) for x in pairs]
>>> pairs
['4', 'F']
加一点数学。
/
- 整数除法%
- 模运算符
代码
>>> num = 5270
>>> pairs = [chr(num/100),chr(num%100)]
>>> pairs
['4', 'F']
并匹配所需的输出
>>> ''.join(pairs)
'4F'
除了@BhargavRao 的回答,您还可以使用 divmod
内置函数:
num = 5270
''.join(map(chr, divmod(num, 100)))
# '4F'
您还可以使用字符串格式:
'{:c}{:c}'.format(*divmod(num, 100))
# '4F'