python - 如何在 python 中解码这个二进制字符串?
问题描述
所以,我有这个字符串01010011101100000110010101101100011011000110111101110100011010000110010101110010011001010110100001101111011101110111100101101111011101010110010001101111011010010110111001100111011010010110110101100110011010010110111001100101011000010111001001100101011110010110111101110101011001100110100101101110011001010101000000000000
我想使用python对其进行解码,我收到了这个错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 280: invalid start byte
根据这个网站:https ://www.binaryhexconverter.com/binary-to-ascii-text-converter
输出应该是S�ellotherehowyoudoingimfineareyoufineP
这是我的代码:
def decodeAscii(bin_string):
binary_int = int(bin_string, 2);
byte_number = binary_int.bit_length() + 7 // 8
binary_array = binary_int.to_bytes(byte_number, "big")
ascii_text = binary_array.decode()
print(ascii_text)
我如何解决它?
解决方案
正如错误消息告诉您的那样,您的字节根本无法解码为 utf-8。
utf-8 是decode的默认编码参数- 输入正确编码值的最佳方法是知道编码 - 否则您将不得不猜测。
猜测可能也是网站所做的,通过尝试最常见的编码,直到不抛出异常:
def decodeAscii(bin_string):
binary_int = int(bin_string, 2);
byte_number = binary_int.bit_length() + 7 // 8
binary_array = binary_int.to_bytes(byte_number, "big")
ascii_text = "Bin string cannot be decoded"
for enc in ['utf-8', 'ascii', 'ansi']:
try:
ascii_text = binary_array.decode(encoding=enc)
break
except:
pass
print(ascii_text)
s = "01010011101100000110010101101100011011000110111101110100011010000110010101110010011001010110100001101111011101110111100101101111011101010110010001101111011010010110111001100111011010010110110101100110011010010110111001100101011000010111001001100101011110010110111101110101011001100110100101101110011001010101000000000000"
decodeAscii(s)
输出:
S°ellotherehowyoudoingimfineareyoufineP
但是不能保证您通过猜测找到“正确”的编码。
推荐阅读
- swift - 在 SwiftUI 应用程序中使用 PHCachingImageManager 显示 PHAssets(照片)-正文视图中的 IF 语句不起作用
- image - 由于架构版本 1 已弃用,Docker 未能将清单文件推送到内部注册表
- css - 在深色或浅色模式下更改输入文本颜色
- javascript - Javascript_api_promise 问题/需要更快的解决方案
- css - 使用 flex css 排序 div
- python - 有人可以解释 for 循环中发生的代码吗?LSTM 预测
- python - Python pygal 渲染到屏幕
- c# - 在 Chrome(Kiosk 模式)中打开 URL 并在关闭时重新打开
- ag-grid - 在 ag-grid 中以编程方式设置行分组
- keras - Keras 中的时间序列编码器-解码器 LSTM