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

Python将包含十六进制的字符串转换为实际十六进制

Python将包含十六进制的字符串转换为实际十六进制,python,hex,decimal,implicit-conversion,Python,Hex,Decimal,Implicit Conversion,我有一个十六进制字符串,但我需要将它转换为实际的十六进制。 例如,我有一个十六进制字符串: 实现目标的一种方法是使用转义序列: print("\x3f\x48\x00\x00\x3f\x48\x00\x00") 但是,我不能这样做,因为我想从多个变量一起创建十六进制 我的计划的目的是: 以数字为例100 将其乘以100:100*100=10000 将其转换为十六进制2710 添加0000 再次添加2710 再次添加0000 我期望的结果是2710000027100000。现在我需要将这个十六进

我有一个十六进制字符串,但我需要将它转换为实际的十六进制。 例如,我有一个十六进制字符串:

实现目标的一种方法是使用转义序列:

print("\x3f\x48\x00\x00\x3f\x48\x00\x00")
但是,我不能这样做,因为我想从多个变量一起创建十六进制

我的计划的目的是:

  • 以数字为例
    100
  • 将其乘以
    100
    100*100=10000
  • 将其转换为十六进制
    2710
  • 添加
    0000
  • 再次添加
    2710
  • 再次添加
    0000

  • 我期望的结果是
    2710000027100000
    。现在我需要将这个十六进制数作为参数传递给函数(十六进制)。

    在Python中,没有单独的类型作为“hex”。它将数字的十六进制表示法表示为
    str
    。您可以通过拨打以下电话来检查:

    因此,在您的例子中,为了将字符串显示为十六进制等价物,只需在其前面加上“0x”,如下所示:

    这样,如果您以后可能想将其转换为其他符号,比如整数(根据问题陈述的性质,您肯定需要整数),则只需使用base调用
    int
    ,如下所示:

    >>> int("0x3f4800003f480000", base=16)
    4559894623774310400
    
    事实上,Python的解释器足够聪明。如果您甚至不在“0x”前面加前缀,它将处理它。例如:

    >>> hex(123)
    '0x7b' 
    
    >>> int("3f4800003f480000", base=16)
    4559894623774310400
    
    “0x”表示字符串是十六进制字符串,以防有人(将来)查看/调试您的代码时,他们会明白这一点。这就是为什么它是首选

    所以我的建议是坚持Python的十六进制样式,不要将其转换为转义字符“\x3f\x48\x00\x00\x3f\x48\x00”


    从:

    将整数转换为前缀为“0x”的小写十六进制字符串。如果x不是Python int对象,它必须定义一个返回整数的index()方法


    在Python中,没有单独的类型作为“hex”。它将数字的十六进制表示法表示为
    str
    。您可以通过拨打以下电话来检查:

    因此,在您的例子中,为了将字符串显示为十六进制等价物,只需在其前面加上“0x”,如下所示:

    这样,如果您以后可能想将其转换为其他符号,比如整数(根据问题陈述的性质,您肯定需要整数),则只需使用base调用
    int
    ,如下所示:

    >>> int("0x3f4800003f480000", base=16)
    4559894623774310400
    
    事实上,Python的解释器足够聪明。如果您甚至不在“0x”前面加前缀,它将处理它。例如:

    >>> hex(123)
    '0x7b' 
    
    >>> int("3f4800003f480000", base=16)
    4559894623774310400
    
    “0x”表示字符串是十六进制字符串,以防有人(将来)查看/调试您的代码时,他们会明白这一点。这就是为什么它是首选

    所以我的建议是坚持Python的十六进制样式,不要将其转换为转义字符“\x3f\x48\x00\x00\x3f\x48\x00”


    从:

    将整数转换为前缀为“0x”的小写十六进制字符串。如果x不是Python int对象,它必须定义一个返回整数的index()方法


    尝试
    binascii.unexlify

    返回由十六进制字符串hextr表示的二进制数据

    例如:

    assert binascii.unhexlify('3f4800003f480000') == b"\x3f\x48\x00\x00\x3f\x48\x00\x00"
    

    尝试
    binascii.unexlify

    返回由十六进制字符串hextr表示的二进制数据

    例如:

    assert binascii.unhexlify('3f4800003f480000') == b"\x3f\x48\x00\x00\x3f\x48\x00\x00"
    

    在这个问题中,他们想把一个十进制转换成十六进制,但我有一个已经包含十六进制的字符串。如果你乘以6553600而不是100,你就达到了目标的一半,没有任何字符串操作。但我并不完全清楚你的最终程序的目的。在这个问题上,他们可能想把一个十进制转换成十六进制,但我有一个已经包含十六进制的字符串。如果你乘以6553600,而不是乘以100,你就达到了目标的一半,没有任何字符串操作。但我并不完全清楚你们最终计划的目的。