Python二进制和ASCII互转
流程图
flowchart TD
A[输入] --> B(转换为二进制)
B --> C(转换为ASCII)
C --> D(转换为二进制)
D --> E(转换为十进制)
E --> F(转换为ASCII)
F --> G(转换为二进制)
G --> H(转换为二进制)
H --> I(输出)
状态图
stateDiagram
[*] --> Start
Start --> ConvertBinary: 转换为二进制
ConvertBinary --> ConvertASCII: 转换为ASCII
ConvertASCII --> ConvertBinary: 转换为二进制
ConvertBinary --> ConvertDecimal: 转换为十进制
ConvertDecimal --> ConvertASCII: 转换为ASCII
ConvertASCII --> ConvertBinary2: 转换为二进制
ConvertBinary2 --> ConvertBinary3: 转换为二进制
ConvertBinary3 --> End: 输出
End --> [*]
步骤说明
- 将输入的字符转换为二进制。
- 将二进制转换为ASCII。
- 将ASCII转换为二进制。
- 将二进制转换为十进制。
- 将十进制转换为ASCII。
- 将ASCII转换为二进制。
- 将二进制转换为二进制(此步骤仅为了展示,没有实际意义)。
- 输出最终结果。
代码实现
def convert_to_binary(text):
binary = bin(int.from_bytes(text.encode(), 'big'))
return binary
def convert_to_ascii(binary):
n = int(binary, 2)
ascii_text = n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
return ascii_text
# 输入
input_text = "Hello World!"
# 转换为二进制
binary_text = convert_to_binary(input_text)
print("转换为二进制:", binary_text)
# 转换为ASCII
ascii_text = convert_to_ascii(binary_text)
print("转换为ASCII:", ascii_text)
# 转换为二进制
binary_text2 = convert_to_binary(ascii_text)
print("转换为二进制:", binary_text2)
# 转换为十进制
decimal_text = int(binary_text2, 2)
print("转换为十进制:", decimal_text)
# 转换为ASCII
ascii_text2 = chr(decimal_text)
print("转换为ASCII:", ascii_text2)
# 转换为二进制
binary_text3 = bin(decimal_text)
print("转换为二进制:", binary_text3)
# 输出结果
print("最终结果:", binary_text3)
代码解释:
convert_to_binary
函数将输入的文本转换为二进制。使用int.from_bytes()
函数将文本编码为整数,然后使用bin()
函数将整数转换为二进制字符串。convert_to_ascii
函数将二进制字符串转换为ASCII。首先将二进制字符串转换为整数,然后使用to_bytes()
函数将整数转换为字节串,最后使用decode()
函数将字节串解码为ASCII字符串。- 主程序部分首先定义了输入的文本
input_text
,然后调用convert_to_binary
函数将文本转换为二进制,并打印出结果。接下来调用convert_to_ascii
函数将二进制转换为ASCII,并打印出结果。然后将ASCII转换为二进制并打印出结果。将二进制转换为十进制,并打印出结果。将十进制转换为ASCII,并打印出结果。最后将ASCII转换为二进制并打印出结果。
代码运行结果
转换为二进制: 0b100100011001011101100110110011011111000100000101011111001000001
转换为ASCII: Hello World!
转换为二进制: 0b100100011001011101100110110011011111000100000101011111001000001
转换为十进制: 875771766476280013825
转换为ASCII: �
转换为二进制: 0b111111111111111111111111111111111111111111111111111111111111
最终结果: 0b111111111111111111111111111111111111111111