Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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 - Fatal编程技术网

Python 如何将十六进制字符串转换为十六进制数?

Python 如何将十六进制字符串转换为十六进制数?,python,Python,我在ex.16中有一个整数,我试图把这个数转换成十六进制数。我试图通过使用十六进制函数来实现这一点,但每当您向十六进制函数提供一个整数时,它就会返回十六进制数的字符串表示形式 my_number = 16 hex_no = hex(my_number) print type(hex_no) // It will print type of hex_no as str. 有人能告诉我如何将字符串格式的十六进制数转换为简单的十六进制数。 谢谢 您的代码适用于我,没有添加撇号 Python

我在ex.16中有一个整数,我试图把这个数转换成十六进制数。我试图通过使用十六进制函数来实现这一点,但每当您向十六进制函数提供一个整数时,它就会返回十六进制数的字符串表示形式

my_number = 16
hex_no = hex(my_number)    
print type(hex_no) // It will print type of hex_no as str.
有人能告诉我如何将字符串格式的十六进制数转换为简单的十六进制数。

谢谢

您的代码适用于我,没有添加撇号

Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> my_number = 16
>>> hex_no = hex(my_number)
>>> print hex_no
0x10
>>> _
顺便说一下,这里没有“十六进制数”。十六进制只是一种指定数值的方法。在计算机内存中,该数值通常用二进制表示,无论源代码中如何指定(十进制、十六进制等)

干杯


–Alf样本代码:

print "%x"%int("2a",16)

您是否在询问如何将字符串格式的十六进制值“16”转换为整数(即,最终转换为十进制值为22的整数)?你的问题不清楚。如果是这样,您可能需要int('16',16)

使用字符串格式化程序(先新后旧):


对于MS Windows Vista上的Python 2.6.5,命令行解释器的行为如下:

>>>hex(16)
'0x10'
>>>print hex(16)
0x10
我想这是正常的行为:

>>>'abc'
'abc'
>>>print 'abc'
abc

我希望这能有所帮助

我认为这里的大多数答案都被误解了,或者他们对问题的理解有误

def add_hex2(hex1, hex2):
    """add two hexadecimal string values and return as such"""
    return hex(int(hex1, 16) + int(hex2, 16))
print add_hex2('0xff', '0xff')  # 0x1fe
要回答您的问题,不可能将十六进制数据的结果字符串表示形式转换为十六进制数(整数表示形式)

因为,当您通过执行以下操作将整数转换为十六进制时

>>> a = hex(34)
>>> print type(a)
<type 'str'>
>>> print a
0x22
>>> a
'0x22'
当您在解释器中键入打印时,它将导致字符串数据不带引号,如果您只键入变量名而不使用print语句,那么它将打印带单引号/双引号的字符串数据

虽然结果值为十六进制数据,但表示形式为字符串

根据Python文档,您不能像我前面所说的那样转换为十六进制数


谢谢。

这有什么关系?打印时只需要十六进制表示。一个数字就是一个数字;十进制、二进制和十六进制只是对外部世界的表示。为什么标题上写着“字符串到数字”,而“数字到十六进制字符串”是你真正想要的?奇怪<代码>打印十六进制。\u否不应打印引号。你能再检查一遍吗?它并不总是把十六进制表示为字符串,这是一个毫无意义的问题。没有十六进制整数或十进制整数这样的东西——在任何情况下,计算机内部都是二进制的。当你把一个整数转换成它的十六进制字符串表示形式时(十六进制就是这样做的),你当然会得到一个字符串……没有“十六进制数”这样的东西。有整数(没有任何基数)和整数的字符串表示(可以是十六进制、十进制、二进制或其他形式)。不能直接对字符串进行算术运算。因此,将它们转换为整数不是一种“变通方法”,而是正确的方法<代码>打印不添加引号。也许OP正在键入
hex\u no
并点击
enter
?+1。问题不清楚。但如果OP试图从十六进制字符串中读取整数,这是一个很好的答案。我想从字符串格式的十六进制中获取十六进制值。例如,“0x16”我想要它,因为运行中的程序中不存在0x16
0x16
!它是
'0x16'
22
(=
int('0x16',16)
)。
def add_hex2(hex1, hex2):
    """add two hexadecimal string values and return as such"""
    return hex(int(hex1, 16) + int(hex2, 16))
print add_hex2('0xff', '0xff')  # 0x1fe
>>> a = hex(34)
>>> print type(a)
<type 'str'>
>>> print a
0x22
>>> a
'0x22'
>>> print a
0x22
>>> a
'0x22'