我已将4个字符ATCG转换为二进制格式,即
00 replacing A
11 replacing T
10 replacing C
01 replacing G
所以是一个字符串
AGAGAGAGTGATAGA
转换后的将如下所示
001000100010001011100011001000
一旦我得到这个值,我把这个二进制数转换成它对应的整数,即
143177928.
问题是,当我想再次回到二进制文件时,它会给我
0b1000100010001011100011001000
这不是原始字符串的正确表示,因为它省略了1之后最左边的所有零。
所以我编写了一个实现二进制转换的方法,我知道二进制字符串应该有多长。所以最后我只是从返回的二进制文件中删除0b并在最左边追加0,即
#zeros = length of original binary - length of returned binary (0b removed)
有没有更好的方法来进行这种转换?
我在python中对此进行编码。
答案 0 :(得分:2)
您可以在MSB之后附加一个标志位来保护所有前导零。
第1步:转化
添加一个"标志"位于末尾并转换您的位串。
In [6]: converted_str = '001000100010001011100011001000'
In [9]: num = int('1' + converted_str, 2)
In [10]: num
Out[10]: 1216919752
第2步:重新转化
使用format
方法将您的号码转换回位字符串,同时剥离第一个"标记"位。
In [12]: reconverted_str = format(num, 'b')[1:]
In [13]: reconverted_str
Out[13]: '001000100010001011100011001000'
答案 1 :(得分:0)
使用'{0:0{1}b}'.format(num, num_digits)
这将添加前导0,直到数字为num_digits
。 ' b'指定num
应转换为二进制。