我如何将 ascii python 字符串转换为其三进制表示

问题描述

我正在尝试以最紧凑的方式以 dna 格式对文本进行编码,该格式只有 a、t 和 g。

我尝试将字符串转换为二进制,然后是 int 和 trinary,但是当通过 int(binary,2) 将二进制转换为 int 时,ascii 文本“损坏”为乱码。

解决方法

我找到了解决方案

def asciiToTrinary(chars):
    result = []
    for char in chars: #covnvert to trinary(revrersed)
        currResults=[]
        n = ord(char)
        while n:
            n,r = divmod(n,3)
            currResults.append(str(r))
        currResults=currResults[::-1]
        result.append("".join(currResults))
    result=result[::-1] #idk what this does but code breakes without it
    result.reverse() #reverse
    trinary=[]
    for char in result: #add padding
        char=(8-len(char))*"0"+char
        trinary+=char
    return "".join(trinary)

def trinaryToAscii(trinary):
    trinary=[trinary[i:i+8] for i in range(0,len(trinary),8)] #break into chunks of 8
    chars=""
    for char in trinary:
        chars+=chr(int(char,3))
    return chars

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...