从字符串获取char的十六进制值

时间:2012-12-20 09:49:05

标签: python python-3.x hex

我目前在我的方法中获取一个字符串作为参数, 我想提取I索引中的char并获取它的十六进制值。 目前我在做:

temp = string[i]
binascii.hexlify(temp);

但是我收到了错误:

TypeError: 'str' does not support the buffer interface

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您需要将字符串编码为字节:

binascii.hexlify(temp.encode('ascii'));

您需要选择合适的编码,可以正确表示您的文字;我假设你的unicode字符落在0-127范围内。

如果编码为不同的编码,则结果将是该编码的十六进制表示。例如,UTF-8将为每个字符使用1到6个字节。

或者,您可以使用ord() function并将结果格式化为十六进制:

format(ord(temp), 'x')

它可以与任何unicode角色一起使用。它将使用Unicode代码点进行十六进制表示,因此介于1到4个字节之间(后者用于\Uabcdefgh个宽字符)。根据您的最大字符宽度,您可能需要填充字节以防止模糊的代码点;假设您需要编码到代码点\uffff,那么您需要为每个代码点使用2个字节,或者4个十六进制字符:

format(ord(temp), '04x')