Converting a binary formatted string (with leading zeros) to an integer and back again
我已将4个字符atcg转换为二进制格式,即
1 2 3 4 | 00 replacing A 11 replacing T 10 replacing C 01 replacing G |
所以一个字符串
1 | AGAGAGAGTGATAGA |
号
转换后会像
1 | 001000100010001011100011001000 |
一旦我得到这个值,我就把这个二进制转换成它对应的整数,即
1 | 143177928. |
。
问题是,当我想再次回到二进制时,它给了我
1 | 0b1000100010001011100011001000 |
这不是原始字符串的正确表示,因为它省略了1后面最左边的所有零。
所以我写了一个实现二进制转换的方法,我知道二进制字符串应该有多长。所以最后,我只是从返回的二进制文件中删除0b,并在最左边附加0s,即
1 | #zeros = length of original binary - length of returned binary (0b removed) |
。
有没有更好的方法来做这种转换??
我正在用python编写这个代码。
您可以在MSB后面附加一个标志位来保护所有前导零。
步骤1:转换
在末尾添加一个"标志"位并转换位字符串。
1 2 3 4 5 6 | In [6]: converted_str = '001000100010001011100011001000' In [9]: num = int('1' + converted_str, 2) In [10]: num Out[10]: 1216919752 |
第二步:再转换
使用
1 2 3 4 | In [12]: reconverted_str = format(num, 'b')[1:] In [13]: reconverted_str Out[13]: '001000100010001011100011001000' |
号
使用
这将添加前导0,直到数字为