将二进制格式化的字符串(带前导零)转换为整数然后再返回

时间:2017-07-13 13:57:04

标签: python string python-2.7 binary

我已将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中对此进行编码。

2 个答案:

答案 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应转换为二进制。