【问题标题】:Binary String data to Hexadecimal in python在python中将二进制字符串数据转换为十六进制
【发布时间】:2020-02-26 20:05:43
【问题描述】:
binaryValue= '000000000000000011110011'

我想分隔 8 个字符并将 8 位转换为十六进制格式,因为上面的值将是 '0x000x000xf3'

我希望通过 python 将这个值打印为'\x00\x00\xf3'。请让我知道如何使用 python 实现这一点。如果在每个 binaryValue 字符串末尾都有'\n',请告诉我会发生什么。如何实现这一点。

【问题讨论】:

  • 你从哪里得到这个值?
  • for i in range(0, len(hexVal), 8): hexString += hex(int(hexVal[i:i + 8], 2)) 使用它时,我得到了这些输出。但我希望我的输出为\x00\x00\xf3

标签: python binary hex


【解决方案1】:

你可以这样做:

inputStr = '000000000000000011110011'
n = 8
listOfBytes = [inputStr[i:i+n] for i in range(0, len(inputStr), n)]
for i in listOfBytes: 
    print(hex(int(i, 2)))

输出_:

0x0 0x0 0xf3

【讨论】:

  • 但我希望我的输出类似于\x00\x00\xf3。与您的输出相同,但在 0x0 的情况下,我希望它为 \x00。请帮助我如何实现
【解决方案2】:

你可以这样做:

b = '000000000000000011110011'
h = '\\' + '\\'.join('x' + hex(int(b[i:i + 8], 2)).split('x')[1].zfill(2) for i in range(0, len(b), 8))
print(h) # This will print \x00\x00\xf3

将其分解为更长的循环以使其更具可读性:

b = '000000000000000011110011'
h = ''
for i in range(0, len(b), 8): # Same as you did
    temp = hex(int(b[i:i + 8], 2)) # Same as you did
    temp = temp.split('x')[1] # to get the last part after x
    temp = temp.zfill(2) # add leading zeros if needed
    h += '\\x' + temp # adding the \x back
print(h) # This will print \x00\x00\xf3

我猜您必须将其用作 unicode 和/或将其转换为其他内容?如果是这样,请在此处查看答案:Python: unescape "\xXX"

【讨论】:

    【解决方案3】:

    我想出的正确答案是:

    binaryString = '000000000000000011110011'
    hexString = ''
    for i in range(0, len(binaryString), 8):
        if len(hex(int(binaryString[i:i + 8], 2))) == 3:
            tempString = hex(int(binaryString[i:i + 8], 2)).replace("0x", "\\x")
            hexString += "0" + tempString
        else:
            hexString += hex(int(binaryString[i:i + 8], 2)).replace("0x", "\\x")
    
    print(hexString)
    

    【讨论】:

      猜你喜欢
      • 2017-05-26
      • 2010-11-17
      • 2013-11-24
      • 1970-01-01
      • 2023-03-04
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多