python - 将二进制格式的字符串(带有前导零)转换为整数并再次转换回来

标签 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 编写这个代码。

最佳答案

您可以在 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/

相关文章:

c++ - float 的验证和转换

python - 为什么我不能让 Google 的 Python 测试工作?

python - 非常奇怪的Python 3字节到字符串失败

python-2.7 - Geopandas 数据框/矩阵 - 过滤/删除 NaN/False 值

python - 如何使用字符串访问 pandas DataFrame 日期时间索引

python - 操作reduce()MapReduce模型

mysql - SQLAlchemy AppEngine 标准 - 与 MySQL 服务器的连接丢失

python - 从 for 循环中获取平均值

python - 如何上下移动

python - 如何减小 5 层 for 循环的大小