Python 使用十六进制转义打印整个字符串,包括可打印字符
打印在终端中看起来像这样: 我想打印不带ASCII码的精确“\x01\x02\x00” 另外,我不确定像“\x01\x02\x00”这样的字符叫什么,我想它是转义的十六进制字符串 我在网上看到过这样的情况:Python 使用十六进制转义打印整个字符串,包括可打印字符,python,python-2.7,Python,Python 2.7,打印在终端中看起来像这样: 我想打印不带ASCII码的精确“\x01\x02\x00” 另外,我不确定像“\x01\x02\x00”这样的字符叫什么,我想它是转义的十六进制字符串 我在网上看到过这样的情况: data = Socket.recv(1024) # '\x01\x02\x00' according to debugger print(data) # prints SQH STX \000 不完全是我想要的。是否要输出原始值?您可以根据hex()返回的内容滚动您自己的自定义格式:
data = Socket.recv(1024) # '\x01\x02\x00' according to debugger
print(data) # prints SQH STX \000
不完全是我想要的。是否要输出原始值?您可以根据hex()返回的内容滚动您自己的自定义格式: 输出:
def formatit(s):
"""Truncates 0x from the beginning, prepends leading \x or \x0 as needed.
Produces hex numbers with 2,4,6,8 etc. positions as needed."""
if len(s)%2 == 0:
return r"\x"+s[2:] # 0x8312 -> \x8312
else:
return r"\x0"+s[2:] # 0x831 -> \x0831
byte_s = [0x83, 0x02, 0x00, 0x00]
s = ''.join(formatit(hex(k)) for k in byte_s)
print(s) # \x83\x02\x00\x00
如果你想让它更淫秽,你可以选择这一行:
\x83\x02\x00\x00
一个简短的实现:
data='\x00abc'
打印(''.join(映射('\\x{:02x}).格式,映射(ord,数据)))
输出
\x00\x61\x62\x63
/p>打印repr(数据)
>>data='\x83\x02\x00\x5e\x00'>>repr(数据)打印:'\x83\x02\x00^\x00'缺少x5e,并且在其位置有“^”吗?@sssss repr通过将十六进制的输出替换为已知字符来“优化”十六进制的输出-f.e.将0x13
替换为\n
,0x10
与\r
等一起使用,以减少打印字符的数量。。。猜猜是什么字符0x5e
\x83\x02\x00\x00
s = ''.join(r"\x"+ "0"*(len(k)%2) + k[2:] for k in (hex(j) for j in byte_s))