为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 ASCII 转换为位字符串(二进制)

如何将 ASCII 转换为位字符串(二进制)

holdtom 2022-08-16 16:34:49
我正在寻找一个类似于此的循环,用于将ASCII转换为十进制,然后将十进制转换为二进制字符串:string = input(“Enter message: ”)#Convert string from ASCII to DecimalA_string = [ord(c) for c in string]print(A_string)# add 1 to ASCII value B_string = A_stringfor i in range(len(B_string)):    B_string[i] = B_string[i] + 1 print(B_string)#Decimal to Binarydecimal = B_stringremainder = decimalBinary_string = decimalfor i in range(len(decimal)):    remainder[i] = int(decimal[i])    remainder[i] %= 2    decimal[i] = decimal[i] // 2    Binary_string[i] = str(remainder[i] + Binary_string[i])print(Binary_string)我不寻找的是这样的东西:res = “”.join(f“{ord(shiftedChar):08b}”)移位字符我正在寻找基本的老式技术...使用基本除法、乘法、幂等对实际发生的情况进行编程
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

从 https://stackoverflow.com/a/7397195/1675501

首先,您需要去除 0b 前缀,并在字符串上以左零键填充,使其长度可被 8 整除,以便将位字符串向上划分为字符:

bitstring = bitstring[2:]
bitstring = -len(bitstring) % 8 * '0' + bitstring

然后,将字符串划分为八个二进制数字块,将它们转换为 ASCII 字符,然后将它们连接回字符串:

string_blocks = (bitstring[i:i+8] for i in range(0, len(bitstring), 8))
string = ''.join(chr(int(char, 2)) for char in string_blocks)

如果您真的想将其视为一个数字,您仍然必须考虑这样一个事实,即如果您想从左到右而不是从右到左,最左边的字符最多只有七位数。


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信