我正在努力将整数值转换为高/低消息,如下所示:
def int2message(integer):
messageHigh=chr(integer//256)
messageLow=chr(integer%256)
return [str(messageHigh),str(messageLow)]
以下是示例:
>>testValue=int2message(10)
>>print(testValue)
['\x00', '\n']
现在,我想将此结果附加到列表的末尾,如下所示:
['0xA2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '00', '0n']
| |
high low
但我发现将ASCII值保存为普通字符串很困难。我无法使用replace()
删除\x
和\
以及普通字符串的其他操作。
当我分别打印\x00
和\n
时,它们是不可见的。
有什么好主意可以解决这个问题吗? 是否有更好的格式将整数值转换为普通字符串?
答案 0 :(得分:1)
假设您使用的是ASCII或其8bit衍生产品之一(为了能够打印低于256的所有代码点),您必须知道:
'\x00'
是空字符,'\x0a'
(或'\n'
)是LineFeed '\x20'
(32)是空格字符'!'
)和126('~'
)之间的代码点是正常的可打印ASCII字符'\xe9'
在Latin1字符集中打印为é
,在CP850字符集中打印为'Ú'
换句话说,您可以将任何低于256的值存储在字符(或Python 3中的字节)中,但不能直接打印它们。如果要打印它们,请将其转换为带有hex
的hexa或带有str
的十进制值字符串。
答案 1 :(得分:0)
部分答案,我担心因为我不清楚你想要输出什么。十进制数10给出ASCII字符\ n(这是一个换行符)。我假设当你将它转换为字符串时,你需要一个不可见的换行符(而不是任何实际的字符输出)。进行以下调整将为您提供。
def int2message(integer):
messageHigh=chr(integer//256)
messageLow=chr(integer%256)
return [str(messageHigh),str(messageLow)]
testValue=int2message(10)
testValue = bytearray(testValue)
print(testValue)
输出只是一个空格,后跟换行符(因此光标移动但不输出文本)。