我已将 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 编写这个代码。
最佳答案
您可以在 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'
关于python - 将二进制格式的字符串(带有前导零)转换为整数并再次转换回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45082844/