如何使用Python将bin转换为char和char转换为bin ASCII?

2024-07-04 04:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如何以ASCII(字节)格式将bin转换为char和char转换为bin

例如,如果我有: 1010111001100111110010101001011111000001101111011000011

我应该有®Ï*¾°,但如果我将此字符转换为bin,我将有:

1010111011001111101010101111101101110110000

这个二进制字符串不同,因为例如,当我将bin转换为char时,char*是通过00101010获得的。但是,当我将char*转换为bin时,我有101010

这是我的密码:

def bin_to_char(self,text_bin):
        char=''
        stock=''

        for bit in text_bin:
            if len(stock)<8:
                stock+=bit
            elif len(stock)==8:
                print(stock)
                char+=chr(int(stock, 2))
                print(char)
                stock=''

        char+=chr(int(stock, 2)) #add the last binary text less than 8

        return(char)

    def char_to_bin(self,char):
        chbin=''

        for e in char:
            print(e)

            chbin+=format(ord(e), 'b')
            print(chbin)

        return(chbin)

Tags: totextinselfforlenbindef
1条回答
网友
1楼 · 发布于 2024-07-04 04:59:38

二进制字符串不表示字符的八位字节。必须为每个序列解析它。下面是一些从二进制字符串到文本字符串的代码。然后,将字符串转换回二进制

rs变量是结果字符串

s = '1010111001100111110010101001011111000001101111011000011'
t = s
a = [['C', '00'], ['N', '10'], ['T', '11'], ['A', '011'], ['G','010']]

letter = 0
code = 1
rs = ''

while (t != ''):
    for pair in a:
        if t.startswith(pair[code]):
            t = t[len(pair[code]):]
            rs += pair[letter]
            break

print(rs)

# Convert rs back to binary string

rbs = ''
for c in rs:
    for pair in a:
        if c == pair[letter]:
            rbs += pair[code]
            break

print(rbs)
if (rbs != s): print('ERROR: Conversion failed')
exit(0)

让我知道我得到了什么样的分数

相关问题 更多 >

    热门问题