Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串获取字符的十六进制值_Python_Python 3.x_Hex - Fatal编程技术网

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

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')); 你需要选择一个合适的编码,一个能够正确表示文本的编码;我认为

我当前在方法中获得一个字符串作为参数, 我想提取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个字节

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

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。这就完成了。谢谢