如果使用数字或特殊字符,文本到二进制转换器将不起作用

问题描述 投票:0回答:1

当输入中包含空格或特殊字符时,将字符串格式化为二进制数存在问题。

phrase = "a b"
bin_str = '0'+'0'.join(format(ord(i), 'b') for i in phrase)
print(bin_str)
original_string = int('0b'+bin_str,2).to_bytes((int('0b'+bin_str,2).bit_length() + 7) // 8, 'big').decode()
print(original_string)

我应该得到:011000010010000001100010但是我得到了:01100001010000001100010当我尝试解码时,在第4行中收到错误消息:

“ utf-8'编解码器无法解码位置1的字节0xa0:无效的起始字节”

如果可变词组是“año”我应该得到:01100001110000111011000101101111但是我得到了:0110000101111000101101111当我尝试解码时,在第4行中收到错误消息:

“ utf-8'编解码器无法解码位置0的字节0xc2:无效的连续字节”

我知道编解码器错误正在发生,因为二进制数字是错误的,但是如果ord()方法使用Unicode,我不知道为什么当我使用空格,特殊字符甚至是数字时转换器会工作错误。

python text binary converters
1个回答
0
投票

我更改了此选项:bin_str = '0'+'0'.join(format(ord(i), 'b') for i in phrase)至:bin_str = '0'+bin(int.from_bytes(phrase.encode(), 'big'))[2:].zfill(8)现在工作完美!PD:我仍然不知道为什么第一行不起作用的原因

© www.soinside.com 2019 - 2024. All rights reserved.