现在收到4个字节字符串 s,Python读取得到的是\xff\x08\x00\x0a
我想print显示为16进制, FF 08 00 0A
print '%X %X %X %X' %(s)
错误信息:TypeError: %X format: a number is required, not str
修改一下
print '%X %X %X %X' %(int(s))
错误信息:ValueError: invalid literal for int() with base 10: '\xff\x08'
后来又试了atoi
print '%X%X%X%X' %(string.atoi(s, 16))
错误信息:ValueError: invalid literal for int() with base 16: '\xff\x08\x00\n'
后来发现最大的问题在于 \x 转义,如果是0x的话倒是可以解决,想问一下有什么办法可以解决这个问题吗
1
jatsz 2015-01-27 11:08:34 +08:00
s.encode('hex') #如果是想转成hex的字符串的话
print '%02X %02X %02X %02X' % (tuple(bytearray(s))) #带分隔的二进制字符串 |
2
wartime 2015-01-27 11:08:43 +08:00
print ' '.join('{:02X}'.format(ord(i)) for i in s)
|
5
Sylv 2015-01-27 11:24:09 +08:00
import binascii
s = '\xff\x08\x00\x0a' s = [binascii.hexlify(c).upper() for c in s] print ' '.join(s) |