Python 16进制是Python语言中的一个数据类型,也是需要掌握的一个重要知识点。本文将从几个方面进行阐述。
一、Python中的16进制表示
Python中的16进制表示方法是以”0x”作为前缀,后面跟着16进制数。例如:
num = 0x1F
print(num) # 输出31
上述代码中,通过”0x1F”的方式将31赋值给num。”
同时,Python也支持将10进制的数字转化为16进制:
num = 31
hex_num = hex(num)
print(hex_num) # 输出"0x1f"
二、进制转换函数
Python提供了几个函数用于进制之间的转换:
bin(num)
:将数字转换为2进制表示。oct(num)
:将数字转换为8进制表示。hex(num)
:将数字转换为16进制表示。
这些函数将数字作为参数,返回对应的字符串。
num = 31
bin_num = bin(num)
oct_num = oct(num)
hex_num = hex(num)
print(bin_num) # 输出"0b11111"
print(oct_num) # 输出"0o37"
print(hex_num) # 输出"0x1f"
三、字符串与16进制之间的转换
Python中,字符串与16进制之间的转换也是十分常见的。字符串可以通过encode
方法转换为16进制,而16进制则可以通过decode
方法转换为字符串。
str = "Hello World"
hex_str = bytes(str, 'utf-8').hex()
print(hex_str) # 输出"48656c6c6f20576f726c64"
decoded_str = bytes.fromhex(hex_str).decode('utf-8')
print(decoded_str) # 输出"Hello World"
四、使用 struct 模块进行打包与解包
struct 模块可以实现 Python 数据类型和 C 结构体之间的转换。使用该模块可以对数据进行打包(pack)和解包(unpack)操作。
下面的例子将 int 类型的数值转换为 4 个字节的二进制格式,并打印出结果。
import struct
num = 12345678
packed = struct.pack('i', num)
print(repr(packed)) # 输出 b'\x12\x34\x56\x78'
pack 的第一个参数是格式化字符串,表示打包数据时使用的格式。
其中,i 表示数据类型为 int,可选的格式化字符串如下:
b
表示 signed char。B
表示 unsigned char。h
表示 signed short。H
表示 unsigned short。i
表示 signed int。I
表示 unsigned int。f
表示 float。d
表示 double。
解包的示例代码如下:
import struct
packed = b'\x12\x34\x56\x78'
num = struct.unpack('i', packed)[0]
print(num) # 输出 12345678
五、总结
Python 16进制是一个十分重要的数据类型,本文从多个方面进行了详细的阐述。
原创文章,作者:NHNAL,如若转载,请注明出处:https://www.506064.com/n/373728.html