python 2进制 10进制 16进制之间如何转换
时间: 2025-07-21 21:54:12 浏览: 4
<think>我们使用Python内置函数进行进制转换:
1. 十进制转二进制:bin()
2. 十进制转十六进制:hex()
3. 二进制转十进制:int(bin_string, 2)
4. 十六进制转十进制:int(hex_string, 16)
5. 二进制转十六进制:先转十进制再转十六进制,或者使用hex(int(bin_string, 2))
6. 十六进制转二进制:先转十进制再转二进制,或者使用bin(int(hex_string, 16))
注意:bin()和hex()返回的是字符串,并且分别带有前缀'0b'和'0x',转换时可能需要去掉前缀。
下面给出具体示例:</think>### Python中进制转换详解
Python提供了内置函数实现二进制、十进制和十六进制之间的相互转换。以下是具体方法及示例:
---
#### **1. 十进制 → 二进制**
- **函数**:`bin()`
- **输出格式**:字符串,前缀 `0b` 表示二进制
- **示例**:
```python
num = 10
binary = bin(num) # 输出 '0b1010'
print(binary[2:]) # 去除前缀:'1010'
```
---
#### **2. 十进制 → 十六进制**
- **函数**:`hex()`
- **输出格式**:字符串,前缀 `0x` 表示十六进制
- **示例**:
```python
num = 255
hex_value = hex(num) # 输出 '0xff'
print(hex_value[2:]) # 去除前缀:'ff'
```
---
#### **3. 二进制 → 十进制**
- **函数**:`int(二进制字符串, 2)`
- **关键**:需去除 `0b` 前缀,或直接使用二进制字符串
- **示例**:
```python
binary_str = "1010"
decimal = int(binary_str, 2) # 输出 10
# 带前缀的转换
binary_with_prefix = "0b1010"
decimal = int(binary_with_prefix, 0) # 自动识别进制
```
---
#### **4. 十六进制 → 十进制**
- **函数**:`int(十六进制字符串, 16)`
- **关键**:需去除 `0x` 前缀,或直接使用十六进制字符串
- **示例**:
```python
hex_str = "ff"
decimal = int(hex_str, 16) # 输出 255
# 带前缀的转换
hex_with_prefix = "0xff"
decimal = int(hex_with_prefix, 0) # 自动识别进制
```
---
#### **5. 二进制 ↔ 十六进制**
通过十进制中转:
```python
# 二进制 → 十六进制
binary = "1101"
hex_value = hex(int(binary, 2)) # 输出 '0xd'
# 十六进制 → 二进制
hex_str = "d"
binary = bin(int(hex_str, 16)) # 输出 '0b1101'
```
---
#### **6. 格式化输出(无前缀)**
使用 `format()` 函数控制格式:
```python
num = 15
# 二进制格式化
print(format(num, 'b')) # 输出 '1111'
# 十六进制格式化(小写)
print(format(num, 'x')) # 输出 'f'
# 十六进制格式化(大写)
print(format(num, 'X')) # 输出 'F'
```
---
### **应用场景示例**
**案例**:解析硬件寄存器值(16进制)→ 计算实际状态(2进制)
```python
# 从传感器读取16进制值 "0x1F"
register_hex = "0x1F"
# 转为十进制
decimal_value = int(register_hex, 0) # 31
# 转为二进制分析位状态
binary_str = bin(decimal_value)[2:].zfill(8) # '00011111'
bit7 = binary_str[0] # 最高位状态: '0'(正常)
```
阅读全文
相关推荐

















