我目前在我的方法中获取一个字符串作为参数,我想提取 I 索引中的字符并获取它的十六进制值。目前我正在做:
temp = string[i]
binascii.hexlify(temp);
但我得到一个错误:
TypeError: 'str' does not support the buffer interface
请问有什么想法吗?
我目前在我的方法中获取一个字符串作为参数,我想提取 I 索引中的字符并获取它的十六进制值。目前我正在做:
temp = string[i]
binascii.hexlify(temp);
但我得到一个错误:
TypeError: 'str' does not support the buffer interface
请问有什么想法吗?
您需要将字符串编码为字节:
binascii.hexlify(temp.encode('ascii'));
您需要选择一种合适的编码,一种可以正确表示您的文本的编码;我假设您的 Unicode 字符在此处的 0-127 范围内。
如果您编码为不同的编码,则结果将是该编码的十六进制表示。例如,UTF-8 将使用每个字符 1 到 6 个字节。
或者,您可以使用该ord()
函数并将结果格式化为十六进制:
format(ord(temp), 'x')
它适用于任何 unicode 字符。它将使用 Unicode 代码点进行十六进制表示,因此在 1 到 4 个字节之间(后者用于\Uabcdefgh
宽字符)。根据您的最大字符宽度,您可能需要填充字节以防止代码点不明确;假设您需要编码到代码点,\uffff
那么您需要为每个代码点使用 2 个字节,或 4 个十六进制字符:
format(ord(temp), '04x')