2017-01-11 115 views
-2

我使用python3.5,我希望写输出我在十六进制字节得到(b'\x00'b'\x01'等),以Python字符串与\x00 -> 0\x01 -> 1,我也有这种感觉,可以很容易地,并在完成非常pythonic的方式,但半小时的谷歌搜索仍然让我觉得最简单的就是用手绘制一本字典(我实际上只需要它从0到7)。蟒蛇十六进制二进制转换为字符串

Input Intended output 
b'\x00' 0 or '0' 
b'\x01' 1 or '1' 

+1

什么是你的输入,什么是想要的输出? – Daniel

+1

'b'表示'字节',而不是二进制。 '\ x00'不是字符串'0',但是代码为'0'的字符不能显示,所以Python会显示它的代码。 – furas

+0

你用'b“\ x0F”' - '“F”'或'“15”'指望的结果是什么? – furas

回答

2

不知道,如果你想这样的结果,但尝试

output = [str(ord(x)) for x in output] 
+0

不错,但会出现'\ x0F'和类似的问题;) – furas

+1

好吧......他说“我只是真的需要它从0到7”:) –

+0

好点 - 我错过了这部分:) – furas

0

如果wiil需要b"\x0F"转换成F然后使用

print(hex(ord(b'\x0F'))[2:]) 

或与format()

print(format(ord(b'\x0F'), 'X')) # '02X' gives string '0F' 
print('{:X}'.format(ord(b'\x0F'))) # '{:02X}' gives string '0F' 
1

一个字节字符串自动是一个数字列表。

input_bytes = b"\x00\x01" 
output_numbers = list(input_bytes) 
1

你只是想找这样的事情吗?

for x in range(0,8): 
    (x).to_bytes(1, byteorder='big') 

输出是:

b'\x00' 
b'\x01' 
b'\x02' 
b'\x03' 
b'\x04' 
b'\x05' 
b'\x06' 
b'\x07' 

或者相反:

byteslist = [b'\x00', 
b'\x01', 
b'\x02', 
b'\x03', 
b'\x04', 
b'\x05', 
b'\x06', 
b'\x07'] 

for x in byteslist: 
    int.from_bytes(x,byteorder='big') 

输出:

0 
1 
2 
3 
4 
5 
6 
7 
相关问题