在 Python 中以十六进制打印变量

使用 hex() 函数以十六进制打印变量,例如 print(hex(variable))。 如果变量存储一个字符串,则对其进行迭代并将每个字符的 Unicode 代码点传递给 hex() 函数。

my_str = 'jiyik'

result = ' '.join(hex(ord(char)) for char in my_str)
print(result) 

# ------------------------------------------

result = ' '.join(f'{ord(char):x}' for char in my_str)
print(result) 

# ------------------------------------------

# ✅ 将字节转换为十六进制
my_bytes = b'\x61\x70\x6c\x65'
result = my_bytes.hex()
print(result)  # 👉️ 61706c65

result = ' '.join(hex(i) for i in my_bytes)
print(result) 

# ------------------------------------------

# ✅ 获取整数的十六进制表示
my_int = 90

result = hex(my_int)
print(result)  

# ------------------------------------------

# ✅ 将整数列表转换为十六进制字符串

my_list = [3, 5, 90, 150, 185]

result = ''.join(f'{num:02x}' for num in my_list)
print(result)  

在 Python 中以十六进制打印变量

前两个示例以十六进制打印字符串变量。

my_str = 'jiyik'

result = ' '.join(hex(ord(char)) for char in my_str)
print(result)  

result = ' '.join(f'{ord(char):x}' for char in my_str)
print(result)  

我们使用生成器表达式来迭代字符串。

生成器表达式用于对每个元素执行一些操作或选择满足条件的元素子集。

在每次迭代中,我们将当前字符传递给 ord() 函数以获取相应的 Unicode 代码点。

print(ord('a'))  # 👉️ 97
print(ord('b'))  # 👉️ 98

ord 函数接受一个表示 1 个 Unicode 字符的字符串,并返回一个表示给定字符的 Unicode 代码点的整数。

hex 函数将整数转换为以 0x 为前缀的小写十六进制字符串。

my_str = 'jiyik'


result = ' '.join(hex(ord(char)) for char in my_str)
print(result) 

如果我们不需要使用 0x 作为十六进制字符串的前缀,请使用格式化的字符串文字。

my_str = 'jiyik'

result = ' '.join(f'{ord(char):x}' for char in my_str)
print(result)  

格式化字符串文字(f-strings)让我们通过在字符串前面加上 f 来在字符串中包含表达式。

冒号后面的 x 字符代表十六进制格式。 它以 16 为基数输出冒号前的数字,对 9 以上的数字使用小写字母。

这些示例使用空格分隔符连接生成器对象,但我们可以使用任何其他分隔符,例如 一个冒号。

my_str = 'jiyik'


result = ':'.join(hex(ord(char)) for char in my_str)
print(result)  # 👉️ 0x65:0x78:0x61:0x6d:0x70:0x6c:0x65

result = ':'.join(f'{ord(char):x}' for char in my_str)
print(result)  # 👉️ 65:78:61:6d:70:6c:65

如果我们需要将字节对象转换为十六进制并打印结果,我们可以使用相同的方法。

my_bytes = b'\x61\x70\x6c\x65'
result = my_bytes.hex()
print(result)  # 👉️ 61706c65

result = ' '.join(hex(i) for i in my_bytes)
print(result)  # 👉️ 0x61 0x70 0x6c 0x65

bytes.hex 方法返回一个字符串,其中每个字节包含两个十六进制数字。

如果我们需要打印一个以十六进制存储整数的变量,请将其传递给 hex() 函数。

my_int = 90

result = hex(my_int)
print(result)  # 👉️ 0x5a

如果我们需要将整数列表转换为十六进制字符串,请使用生成器表达式和格式化的字符串文字。

my_list = [3, 5, 90, 150, 185]

result = ' '.join(f'{num:02x}' for num in my_list)
print(result)  # 👉️ 03 05 5a 96 b9

:02x 语法用于将每个值用前导零填充到固定宽度 2。