如何在 Python 中将单个字符转换为其十六进制 ASCII 值?

Posted

技术标签:

【中文标题】如何在 Python 中将单个字符转换为其十六进制 ASCII 值?【英文标题】:How do I convert a single character into its hex ASCII value in Python? 【发布时间】:2011-12-26 15:58:40 【问题描述】:

我有兴趣接受单个角色。

c = 'c' # for example
hex_val_string = char_to_hex_string(c)
print hex_val_string

输出:

63

解决这个问题的最简单方法是什么?任何预定义的字符串库的东西?

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点:

>>> hex(ord("c"))
'0x63'
>>> format(ord("c"), "x")
'63'
>>> import codecs
>>> codecs.encode(b"c", "hex")
b'63'

在 Python 2 上,您也可以像这样使用hex encoding(不适用于 Python 3+):

>>> "c".encode("hex")
'63'

【讨论】:

"0:02x".format(ord('c')) 保留前导零,如果有的话。 @eryksun:在 Python 3 上,您可以改用 binascii.hexlify()binascii.unhexlify() 使用大写 X 作为格式字符串将使用大写的 A-F 数字,如果这是首选的话。详情请见the docs。 在 Python 3 上使用 "c".encode("hex") 会引发 "LookupError: 'hex' 不是文本编码;使用 codecs.encode() 来处理任意编解码器" @Nagev 字节到字节编码需要通过 Python 3 中的 codecs 模块调用:codecs.encode(b"c", "hex")【参考方案2】:

这可能会有所帮助

import binascii

x = b'test'
x = binascii.hexlify(x)
y = str(x,'ascii')

print(x) # Outputs b'74657374' (hex encoding of "test")
print(y) # Outputs 74657374

x_unhexed = binascii.unhexlify(x)
print(x_unhexed) # Outputs b'test'

x_ascii = str(x_unhexed,'ascii')
print(x_ascii) # Outputs test

此代码包含将 ASCII 字符转换为十六进制的示例。在您的情况下,您想要使用的行是str(binascii.hexlify(c),'ascii')

【讨论】:

嗨,欢迎来到 ***。我对您代码中的 cmets 感到困惑(例如 # x -> b'test')。我看不到源代码中的任何地方都使用了“测试”。我也认为将输出格式化为代码块也会有所帮助,以保留换行符。 b'test' 用于下一行。他所说的只是 x 是字符串“测试”,但前面的 b 表示它是字节格式。下一行将这些字节hexlify成一个新值 请注意,hexlify 似乎将值输出为字符串,因此单个字符将转换为 2 个字符(即数值),这对我来说是一个大问题,因为我的空间非常有限嵌入式设备(mifare 卡)【参考方案3】:

考虑到您的输入字符串在inputString 变量中,您可以简单地在该变量上应用.encode('utf-8').hex() 函数来获得结果。

inputString = "Hello"
outputString = inputString.encode('utf-8').hex()

结果将是48656c6c6f

【讨论】:

【参考方案4】:

你可以这样做:

your_letter = input()
def ascii2hex(source):
    return hex(ord(source))
print(ascii2hex(your_letter))

如需更多信息,请访问: https://www.programiz.com/python-programming/methods/built-in/hex

【讨论】:

【参考方案5】:

使用 ord("a"); 获取 ascii 代码 将 ascii 转换为字符使用 chr(97)

【讨论】:

以上是关于如何在 Python 中将单个字符转换为其十六进制 ASCII 值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将字符串转换为字节数组

在C#中将十六进制字符串转换为其数值[重复]

在 python 中将字符转换为其 ascii 等价物的最简单方法是啥? [复制]

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

如何在Python中将十六进制字符串转换为ObjectId [重复]

如何在 Python 中将十六进制转换为十进制? [复制]