繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM