[英]Converting a binary formatted string (with leading zeros) to an integer and back again
我已经将4个字符的ATCG转换为二进制格式,即
00 replacing A
11 replacing T
10 replacing C
01 replacing G
所以一个字符串
AGAGAGAGTGATAGA
转换后看起来像
001000100010001011100011001000
一旦获得此值,便将该二进制文件转换为其相应的整数,即
143177928.
问题是,当我想再次回到二进制文件时,它给了我
0b1000100010001011100011001000
这不是原始字符串的正确表示形式,因为它从1之后的最左边遗漏了所有零。
因此,我编写了一种实现二进制转换的方法,并且知道二进制字符串应该有多长。 所以最后我只从返回的二进制文件中删除了0b并在最左边添加了0s,即
#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'
使用'{0:0{1}b}'.format(num, num_digits)
这将添加前导0,直到数字为num_digits
为止。 “ b”指定将num
转换为二进制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.