Python Note - 02
Python Note - 02
str, byte, int转换
- str -> int 使用int函数:
1 2
x = int("43") y = int("0xff", 16)
而使用
base = 0可以自动探测前缀:1 2
x = int("0x43", 0) # 67 y = int("43", 0) # 43
- int -> str 普通十进制:
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 <-> bytes
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_bytes1 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- hex str <-> bytes
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
This post is licensed under CC BY 4.0 by the author.