我目前在我的方法中使用字符串作为参数, 我想提取索引为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')