当前位置: 首页 > 知识库问答 >
问题:

在python中将int转换为十六进制字符串

缪远航
2023-03-14

我正在尝试将int转换为字符串中的十六进制。目前的解决方案并不是预期的那样有效。

十六进制必须采用\x格式。例如。255->\xff65->\x41

chr(1) # '\x01'; This is okay.
chr(65) # 'A'
chr(255) # 'ÿ'

输出与十六进制完全不同,即使它们等于相应的十六进制值。输出必须是\x格式的十六进制。

hex(1) # '0x1'
hex(65) # '0x41'
hex(255) # '0xff'

这里不走运。x后跟0所以它不有用。十六进制(1)1之前没有0。我想要那个。更好的是,一个我选择的填充长度。注释中建议的repr(Cr(65))也不起作用。

chr(255).replace('0', "\\") # '\\xff'
hex(255).replace('0x', "\\x") # '\\xff'

不能使用replace(),因为\必须转义,或者代码甚至不能工作。我真的希望避免需要修改字符串的解决方案,因为这涉及到复制。

pythonic的性能解决方案非常值得赞赏。

共有2个答案

阎璞瑜
2023-03-14

你能试试这个吗:

def convert_to_hex(num) -> str:
    return "\\" + str(hex(num))[1:]


print(convert_to_hex(1))

示例输出:

1 -> \x1
2 -> \x2
254->\xfe
255->\xff
朱锦
2023-03-14

如何使用f-string,可以使用其格式方法转换为十六进制,并将其附加到\x

def int_to_hex(char_as_int: int) -> str:
    return rf"{char_as_int} -> \x{char_as_int:02x}"


for i in (65, 46, 78, 97, 145):
    print(int_to_hex(i))

输出

65 -> \x41
46 -> \x2e
78 -> \x4e
97 -> \x61
145 -> \x91
 类似资料:
  • 问题内容: 如何在Python中将十六进制字符串转换为int? 我可能将其命名为或。 问题答案: 如果没有 0x前缀,则需要显式指定基数,否则无法分辨: 使用 0x前缀,Python可以自动区分十六进制和十进制。 (必须指定0为基数才能调用此前缀猜测行为;省略第二个参数意味着假定基数为10。)

  • 问题内容: 我正在尝试将十六进制代码长8个字符的字符串转换为整数,以便可以进行int比较,而不是对许多不同值进行字符串比较。 我知道在C ++中这是微不足道的,但是我需要在Java中完成。我需要满足的测试用例实质上是将“ AA0F245C”转换为int,然后再返回到该字符串,以便我知道它在正确转换。 我尝试了以下方法: 我也尝试一次将两个字符做一次,然后将结果相乘,转换有效,但数字不正确。 不能这

  • 问题内容: 我想将一个整数(将为<= 255)用于十六进制字符串表示形式 例如:我想通过并离开,或获得。 我曾尝试使用65来执行此操作,但由于它想采用单个字符串,因此上述内容均会阻塞。 问题答案: 您正在寻找功能。 您似乎在混合使用整数的十进制表示形式和整数的十六进制表示形式,因此尚不清楚您需要什么。根据您的描述,我认为这些片段之一显示了您想要的内容。 请注意,这与 包含整数(十六进制)的字符串

  • 问题内容: 在Obj-C中,我曾经使用以下命令将无符号整数n转换为十六进制字符串: 我花了很长时间尝试将其翻译成Swift语言,但未成功。 问题答案: 您现在可以执行以下操作: 注意:在此示例中,表示 字段宽度 ,表示所需的 最小 长度。在它告诉垫与领先的结果的如果需要的话。(如果没有,结果将用前导空格填充)。当然,如果结果大于两个字符,则字段长度将不会被剪裁为;它将扩展到显示完整结果所需的任何长

  • 问题内容: 要将String转换为十六进制,我正在使用: 在此处投票最高的答案中对此进行了概述:在Java中将 字符串转换为十六进制 我该如何反向执行,即将十六进制转换为字符串? 问题答案: 您可以从转换后的字符串中进行重构,这是一种实现方法: 另一种方法是使用,从包: 单元测试以验证: 注:领先剥离的仅仅是必要的,因为的你的填充方法。如果您不介意将其替换为简单的,则可以将此行放在:

  • 我有十六进制字符串,例如“0x103E”,我想将其转换为整数。意思是to我尝试了但它给出了数字格式异常。我如何实现这一点?