【问题标题】:String to hex value of FF in python 2.7python 2.7中FF的十六进制值的字符串
【发布时间】:2018-02-01 09:08:30
【问题描述】:

我知道这是一个基本问题,但我真的很难解决。

我正在尝试在 python 2.7 中获取一个字符串以转换为十六进制的 FF(即 OxFF)。

我使用以下代码将字符串转换为字节数组,然后转换为十六进制:

>>> data = 'OxFF'
>>> array = bytearray(data)
>>> print binascii.hexlify(array)
4f784646

对于上下文,我正在使用 twisted 通过 TCP/IP 发送消息,并且标头需要是 FF FF

任何帮助都会很棒。

干杯

【问题讨论】:

  • 表示十六进制字节的传统方式是在值前面加上“zero ex”而不是“big-oh ex”。 Python 2 表示 '\xff' 是一个单字节,其十进制值为 255。这是您要寻找的最终结果吗?

标签: python python-2.7 networking twisted


【解决方案1】:

您可以直接将标题创建为字符串文字:

>>> header = '\xff\xff'
>>> hedaer
'\xff\xff'

data转换:

>>> data = '0xFF'
>>> binascii.unhexlify(data[2:])
'\xff'

关键是跳过0x前缀。

或作为整数:

>>> int(data, 16)
255

其中 255 当然是 0xFF。

【讨论】:

  • 我建议避免使用裸字符串文字。即使它们没有模棱两可(问题标记为 Python 2.7,因此您可以正确说出这意味着什么),它们仍然会导致混淆,尤其是对于初学者而言。在这种情况下,b'\xff\xff'b'0xFF'(尽管 Python 2.7 hexlify/unhexlify 采用字节或 unicode,但它们总是返回字节;这似乎暗示他们真的想对我进行字节操作(在当然,文档会更好,但我看不到))。
猜你喜欢
  • 1970-01-01
  • 2019-07-27
  • 2016-04-22
  • 2014-12-11
  • 1970-01-01
  • 2012-05-24
  • 2020-06-20
  • 2018-08-12
  • 2023-04-08
相关资源
最近更新 更多