在python中将基数为10的整数对转换为ascii字符的最佳方法

时间:2015-06-11 23:38:29

标签: python python-2.7 ascii

我正在使用串行接口与一台测试设备交谈。设备的双字母ascii ID被编码为特定寄存器中的基本10整数。每对整数都需要转换为ascii字符。我的问题是进行此转换的最佳方法是什么。我使用了下面的方法,但对于这么简单的任务来说似乎相当复杂。

示例

输入:5270 期望的输出:'4F'(ascii值为52和70)

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']

2 个答案:

答案 0 :(得分:4)

除@BhargavRao答案外,您还可以使用内置的divmod

num = 5270
''.join(map(chr, divmod(num, 100)))

# '4F'

您还可以使用字符串格式:

'{:c}{:c}'.format(*divmod(num, 100))

# '4F'

答案 1 :(得分:2)

添加一些数学。

  • / - 整数分部
  • % - 模数运算符

代码

>>> num = 5270
>>> pairs = [chr(num/100),chr(num%100)]
>>> pairs
['4', 'F']

并匹配所需的输出

>>> ''.join(pairs)
'4F'