【问题标题】:How could I put hex as string into byte?如何将十六进制作为字符串放入字节?
【发布时间】:2016-03-15 21:17:05
【问题描述】:

我正在尝试从十六进制手动构建一个字节:

>>> '\x74'
't'
>>> hex(116)
'0x74'
>>> hex(116)[1:]
'x74'
>>> '\\' + hex(116)[1:]
'\\x74'
>>> 

是否可以将\x74 精确地创建为字节?

没有对chr()使用魔法。

>>> chr(int(hex(116), 16))
't

【问题讨论】:

  • “作为字节”是什么意思? Python 中没有“字节”类型。您可以制作长度为 1 的 bytearray 或字节字符串(即非 unicode 字符串)。如果你想做的话,chr 不是“魔法”;它是做你想做的事情的功能。
  • @BrenBarn as '\x74' 这是str(实际上是python2.7中的字节。)
  • 您已经创建的字符串是\x74。由于它的显示方式,它只显示两个反斜杠。如果你这样做print('\\' + hex(116)[1:]),你会看到它只有一个反斜杠。但这不是“一个字节”;这是一个包含四个字符的字符串。
  • @BrenBarn 所以我无法在代码中创建'\x74'(可打印t)?手动放置的唯一一种方法..
  • 你可以,而且你刚刚做到了。如果你想要一个打印为"t" 的字符串,那就是字符串"t"。如果您想要一个打印为"\x74" 的字符串,那就是字符串"\x74",您可以输入为r"\x74""\\x74"。没有字符串可以打印为"t",但不知何故秘密地“是”\x74

标签: python python-2.7 hex


【解决方案1】:

您也可以执行'74'.decode('hex') 之类的操作。

输出:

>>> '74'.decode('hex')
't'

【讨论】:

【解决方案2】:

也许你正在寻找struct.pack

In [210]: import struct

In [211]: struct.pack('1B', 0x74)
Out[211]: 't'

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 2019-07-27
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2022-06-18
    • 2014-03-07
    相关资源
    最近更新 更多