我目前在我的方法中获取一个字符串作为参数, 我想提取I索引中的char并获取它的十六进制值。 目前我在做:
temp = string[i]
binascii.hexlify(temp);
但是我收到了错误:
TypeError: 'str' does not support the buffer interface
有什么想法吗?
答案 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')