Python 从字符串获取字符的十六进制值
我当前在方法中获得一个字符串作为参数, 我想提取i索引中的字符并得到它的十六进制值。 目前我正在做:Python 从字符串获取字符的十六进制值,python,python-3.x,hex,Python,Python 3.x,Hex,我当前在方法中获得一个字符串作为参数, 我想提取i索引中的字符并得到它的十六进制值。 目前我正在做: temp = string[i] binascii.hexlify(temp); 但我有一个错误: TypeError: 'str' does not support the buffer interface 有什么想法吗?您需要将字符串编码为字节: binascii.hexlify(temp.encode('ascii')); 你需要选择一个合适的编码,一个能够正确表示文本的编码;我认为
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个字节
或者,您可以使用并将结果格式化为十六进制:
format(ord(temp), 'x')
它可以使用任何unicode字符。它将使用Unicode代码点作为十六进制表示,因此在1到4字节之间(后者用于\Uabcdefgh
宽字符)。根据您的最大字符宽度,您可能希望填充字节以防止代码点不明确;假设您需要编码到代码点\uffff
,那么您需要为每个代码点使用2个字节,或4个十六进制字符:
format(ord(temp), '04x')
实际上ASCII字符在0-127范围内。@kmkaplan:我没有说ASCII在0-255范围内,我说我假设他的数据在该范围内:-P但你是对的,字节值128-255不会编码为ASCII。这就完成了。谢谢