我如何将 ascii python 字符串转换为其三进制表示
How do i convert a ascii python string to its trinary representation
我正在尝试以尽可能最紧凑的方式对只有 a、t 和 g 的 dna 格式的文本进行编码。
我曾尝试将字符串转换为二进制,然后是 int,然后是三进制,但是当通过 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
我正在尝试以尽可能最紧凑的方式对只有 a、t 和 g 的 dna 格式的文本进行编码。
我曾尝试将字符串转换为二进制,然后是 int,然后是三进制,但是当通过 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