Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python3中将原始二进制输出为原始十六进制?_Python 3.x_Binary - Fatal编程技术网

Python 3.x 如何在Python3中将原始二进制输出为原始十六进制?

Python 3.x 如何在Python3中将原始二进制输出为原始十六进制?,python-3.x,binary,Python 3.x,Binary,好吧,我看到了成千上万个不同的答案,但是没有一个是我想要的。我有一个原始的二进制文件。不可读。不是ASCII码。不是妖术。如果你在文本板上打开它,就会看到像“ÿÿÿÿÿÿ”这样的乱七八糟的字符。我想读取原始二进制值,并将这些值写入十六进制。前8位可能是0xAA值,也称为b10101010或十进制170,ascii是上标字母a。我想把原始的AA打印出来,我想一次打印32个字节。我不想打印“ÿÿÿÿÿÿ”。我想打印“0003200320000050005FFFBFFFB0000000FFFBFFFB

好吧,我看到了成千上万个不同的答案,但是没有一个是我想要的。我有一个原始的二进制文件。不可读。不是ASCII码。不是妖术。如果你在文本板上打开它,就会看到像“ÿÿÿÿÿÿ”这样的乱七八糟的字符。我想读取原始二进制值,并将这些值写入十六进制。前8位可能是0xAA值,也称为b10101010或十进制170,ascii是上标字母a。我想把原始的AA打印出来,我想一次打印32个字节。我不想打印“ÿÿÿÿÿÿ”。我想打印“0003200320000050005FFFBFFFB0000000FFFBFFFB”。我也不想以b'\x00\x03\x03\x03\x00\x05\x00\x05\xff\xff\xfb\x00\x00\x00\x00\x00\x00\xfb\xff\xff\xfb\xfb\x00\x00\x00\x00\x00\x00\x00\x00\xf00\xff'结束,甚至是在解析二进制文件时返回的b'\xffb00000000fffb000000000fff'或任何其他奇怪的东西。我绝对需要所有的前导零。我怎样才能得到我想要的?谢谢

这将读取标准输入,并将十六进制表示写入标准输出。您可以将其调整为打开和读取文件(请记住使用模式
'rb'
)或使用
文件
参数或满足您需要的任何内容

def hexdump():
  while True:
    data = sys.stdin.read(32)
    if not data:
      return
    for byte in data:
      sys.stdout.write('%02x' % (ord(byte)))
    sys.stdout.write('\n')

终于想出了一个半体面的办法。将byte对象thingy转换为字符串似乎是错误的,但也许这是最好的方法

import binascii

f = open(<FILENAME/PATH>, "rb")

# hexlify gives bytes object but looks like b'0xabcdef1234' when converted to a string:
hexString = str(binascii.hexlify(f.read(0x20))) 

# grabs just the abcd1234 part:
hexString = hexString.split("'")[1].upper().replace('0X','') 
导入binascii
f=开放(,“rb”)
#hexlify提供bytes对象,但在转换为字符串时看起来像b'0xabcdef1234':
hexString=str(binascii.hexlify(f.read(0x20)))
#仅抓住abcd1234部件:
hexString=hexString.split(“”[1]。upper().replace('0X',“”)

哇,我真的认为这是一个简单的问题,几分钟内就能回答!哈哈,谢谢,这个效果非常好。在我的例子中,我必须先将字节转换为字符“ord(chr(byte))”,但我通过BLE从北欧板接收数据