问题描述
我正在使用以下行将Ascii字符串转换为二进制字符串:
message=(''.join(format(ord(x), 'b') for x in message))
字符以7位格式转换(c-> 1100011)数字以6位格式转换(2-> 110010)我需要以7位格式转换的数字(添加0作为MSB,也许所以2是0110010),知道吗?
1楼
如果您输入的是字符串,则此
format(ord('2'),'07b')
总是产生7位输出,例如
'0110010'
如果您预先忽略输入的类型(即字符串或整数)
format(ord(n) if isinstance(n, str) else n,'07b')
对于n = '2'
产生
'0110010'
而对于n = 2
则产生
'0000010'
区别在于,“ 2”是一个字符串,并且“ 2”的表示形式的值为50(十进制)
如果您想为字符和数字都使用唯一的二进制代码(例如,给数字与字符相同的代码)
format(ord(n) if isinstance(n, str) else n+ord('0'),'07b')
现在产生
'0110010'
对于n = '2'
和n = 2
是否有意义? :)
2楼
message=(''.join('0'+format(ord(x), 'b') for x in message))