1 2
x = int("43") y = int("0xff", 16)
而使用base = 0可以自动探测前缀:
1 2
x = int("0x43", 0) # 67 y = int("43", 0) # 43
1 2 3 4
s1 = int(63) # "63" s2 = hex(48) # "0x30" s3 = bin(15) # "0b1111" s4 = oct(10) # "0o12"
另外可以使用自定义的base format:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
format(255, "x") # "ff" format(255, "#x") # "0x42" format(255, "X") # "FF" format(255, "#X") # "0XFF" format(66, "b") # "1000010" format(66, "#b") # "0b1000010" format(66, "o") # "102" format(66, "#o") # "0o102" format(66, "d") # "66"
int.to_bytes1 2 3 4 5 6 7
n = 0x12345678 b1 = n.to_bytes(4, "big") print(b1) # b'\x12\x34\x56\x78' b2 = n.to_bytes(4, "little") print(b2) # b'\x78\x56\x34\x12'
int.from_bytes
1 2 3 4
b = b"\x78\x56\x34\x12" n = int.from_bytes(b, "little") print(hex(n)) # 0x12345678
normal str <-> bytes 使用 .encode()和.decode(),还可以指定某些编码,比如utf-8
bytes.fromhex()1 2 3 4
hex_s = "41424344" b = bytes.fromhex(hex_s) print(b) # b'ABCD'
注意可以用removeprefix来删除字符的前缀:
1 2 3 4
hex_s = "0x41424344" b = bytes.fromhex(hex_s.removeprefix("0x")) print(b) # b'ABCD'
str.hex()
1 2 3 4
b = b"ABCD" hex_s = b.hex() print(hex_s) # 41424344