杰瑞科技汇

Python integer 转换有哪些常用方法?

Python 的转换函数非常直观,核心是 int() 函数。

Python integer 转换有哪些常用方法?-图1
(图片来源网络,侵删)

其他类型转换为整数 (int())

int() 函数是 Python 中将其他数据类型转换为整数的主要工具,它的基本语法是 int(x, base=10)x 是要转换的对象,base 是可选的进制参数(默认为 10)。

a. 将字符串转换为整数

这是最常见的转换场景之一,字符串必须表示一个有效的整数。

# 将十进制字符串转换为整数
str_num = "123"
int_num = int(str_num)
print(f"类型: {type(int_num)}, 值: {int_num}")
# 输出: 类型: <class 'int'>, 值: 123
# 将带符号的字符串转换为整数
str_num_with_sign = "-456"
int_num_with_sign = int(str_num_with_sign)
print(f"类型: {type(int_num_with_sign)}, 值: {int_num_with_sign}")
# 输出: 类型: <class 'int'>, 值: -456

⚠️ 常见错误:如果字符串不是有效的整数格式,会抛出 ValueError

# 错误示例
# int("hello")  # ValueError: invalid literal for int() with base 10: 'hello'
# int("12.3")   # ValueError: invalid literal for int() with base 10: '12.3'

b. 将浮点数转换为整数

使用 int() 转换浮点数时,它会直接截断小数部分,而不是进行四舍五入。

Python integer 转换有哪些常用方法?-图2
(图片来源网络,侵删)
# 正数,截断小数部分
float_num = 99.9
int_num = int(float_num)
print(f"类型: {type(int_num)}, 值: {int_num}")
# 输出: 类型: <class 'int'>, 值: 99
# 负数,同样截断小数部分
float_num_neg = -99.9
int_num_neg = int(float_num_neg)
print(f"类型: {type(int_num_neg)}, 值: {int_num_neg}")
# 输出: 类型: <class 'int'>, 值: -99

💡 如何实现四舍五入? 应该使用 round() 函数。

pi = 3.14159
rounded_pi = round(pi)      # 四舍五入到最接近的整数
print(f"四舍五入: {rounded_pi}") # 输出: 四舍五入: 3
pi_2 = 3.5
rounded_pi_2 = round(pi_2)
print(f"四舍五入: {rounded_pi_2}") # 输出: 四舍五入: 4

c. 将布尔值转换为整数

在 Python 中,TrueFalse 本质上是 int 的子类。

  • True 转换为 1
  • False 转换为 0
bool_true = True
bool_false = False
int_from_true = int(bool_true)
int_from_false = int(bool_false)
print(f"True -> {int_from_true}")  # 输出: True -> 1
print(f"False -> {int_from_false}") # 输出: False -> 0

d. 将其他进制(字符串)转换为整数

int() 函数的第二个参数 base 非常有用,可以将表示特定进制的字符串转换为十进制整数。

# 二进制 (base=2)
binary_str = "1010"
int_from_binary = int(binary_str, 2)
print(f"二进制 '1010' -> {int_from_binary}") # 输出: 二进制 '1010' -> 10
# 八进制 (base=8)
octal_str = "12"
int_from_octal = int(octal_str, 8)
print(f"八进制 '12' -> {int_from_octal}")   # 输出: 八进制 '12' -> 10
# 十六进制 (base=16)
hex_str = "A"
int_from_hex = int(hex_str, 16)
print(f"十六进制 'A' -> {int_from_hex}")    # 输出: 十六进制 'A' -> 10

⚠️ 注意:当指定 base 时,字符串 x 不能带有符号(如 或 )或表示其他进制的符号(如 0b, 0o)。

Python integer 转换有哪些常用方法?-图3
(图片来源网络,侵删)
# 错误示例
# int("-1010", 2)  # ValueError: invalid literal for int() with base 2: '-1010'
# int("0b1010", 2) # ValueError: invalid literal for int() with base 2: '0b1010'

整数转换为其他类型

将整数转换为其他类型也非常简单,通常使用相应的内置函数。

a. 整数转换为字符串

使用 str() 函数。

my_int = 123
my_str = str(my_int)
print(f"类型: {type(my_str)}, 值: '{my_str}'")
# 输出: 类型: <class 'str'>, 值: '123'

b. 整数转换为浮点数

使用 float() 函数。

my_int = 123
my_float = float(my_int)
print(f"类型: {type(my_float)}, 值: {my_float}")
# 输出: 类型: <class 'float'>, 值: 123.0

c. 整数转换为不同进制的字符串

Python 提供了内置函数来将整数转换为不同进制的字符串表示,这些函数返回的字符串都带有相应的前缀(0b, 0o, 0x)。

my_int = 42
# 转换为二进制字符串
bin_str = bin(my_int)
print(f"整数 {my_int} -> 二进制字符串: {bin_str}")
# 输出: 整数 42 -> 二进制字符串: 0b101010
# 转换为八进制字符串
oct_str = oct(my_int)
print(f"整数 {my_int} -> 八进制字符串: {oct_str}")
# 输出: 整数 42 -> 八进制字符串: 0o52
# 转换为十六进制字符串
hex_str = hex(my_int)
print(f"整数 {my_int} -> 十六进制字符串: {hex_str}")
# 输出: 整数 42 -> 十六进制字符串: 0x2a

💡 如何去除前缀? 可以使用字符串的切片操作 str[2:] 来轻松去除前两个字符。

hex_str_no_prefix = hex(my_int)[2:]
print(f"不带前缀的十六进制字符串: {hex_str_no_prefix}")
# 输出: 不带前缀的十六进制字符串: 2a

进制之间的相互转换(综合示例)

这是一个非常实用的综合示例,展示了如何在十进制、二进制、八进制和十六进制之间进行转换。

# 假设我们有一个十进制数
decimal_number = 255
# 1. 十进制 -> 其他进制 (字符串表示)
binary_representation = bin(decimal_number)
octal_representation = oct(decimal_number)
hex_representation = hex(decimal_number)
print(f"十进制 {decimal_number}:")
print(f"  -> 二进制: {binary_representation}")
print(f"  -> 八进制: {octal_representation}")
print(f"  -> 十六进制: {hex_representation}")
# 输出:
# 十进制 255:
#   -> 二进制: 0b11111111
#   -> 八进制: 0o377
#   -> 十六进制: 0xff
# 2. 其他进制 (字符串) -> 十进制 (整数)
binary_str = "11111111"
octal_str = "377"
hex_str = "ff"
# 注意:使用 int() 时,字符串不能带前缀
decimal_from_bin = int(binary_str, 2)
decimal_from_oct = int(octal_str, 8)
decimal_from_hex = int(hex_str, 16)
print(f"\n从其他进制字符串转换回十进制:")
print(f"  '{binary_str}' (二进制) -> {decimal_from_bin}")
print(f"  '{octal_str}' (八进制) -> {decimal_from_oct}")
print(f"  '{hex_str}' (十六进制) -> {decimal_from_hex}")
# 输出:
# 从其他进制字符串转换回十进制:
#   '11111111' (二进制) -> 255
#   '377' (八进制) -> 255
#   'ff' (十六进制) -> 255

总结表格

转换方向 函数/方法 示例 说明
字符串 -> 整数 int(x) int("123") -> 123 字符串必须是有效的整数格式
浮点数 -> 整数 int(x) int(99.9) -> 99 截断小数部分,不四舍五入
布尔 -> 整数 int(x) int(True) -> 1 True 为 1,False 为 0
N进制字符串 -> 整数 int(x, base) int("ff", 16) -> 255 base 指定进制 (2, 8, 16)
整数 -> 字符串 str(x) str(123) -> "123"
整数 -> 浮点数 float(x) float(123) -> 0
整数 -> 二进制字符串 bin(x) bin(10) -> "0b1010" 结果带 0b 前缀
整数 -> 八进制字符串 oct(x) oct(10) -> "0o12" 结果带 0o 前缀
整数 -> 十六进制字符串 hex(x) hex(10) -> "0xa" 结果带 0x 前缀

希望这个详细的解释能帮助你完全理解 Python 中整数的转换!

分享:
扫描分享到社交APP
上一篇
下一篇