擅长:python、mysql、java
<p>看起来您正在尝试从每个字符的二进制字符串表示(位字符串)中解码ASCII字符。</p>
<p>您可以取八个字符(一个字节)的每个块,将其转换为整数,然后使用<code>chr()</code>将其转换为字符:</p>
<pre><code>>>> X = "0110100001101001"
>>> print(chr(int(X[:8], 2)))
h
>>> print(chr(int(X[8:], 2)))
i
</code></pre>
<p>假设字符串中编码的值是ASCII,这将为您提供字符。你可以这样概括:</p>
<pre><code>def decode_binary_string(s):
return ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))
>>> decode_binary_string(X)
hi
</code></pre>
<p>如果你想保持原来的编码,你不需要再解码了。通常您会将传入的字符串转换为Python<em>unicode</em>字符串,可以这样做(Python 2):</p>
<pre><code>def decode_binary_string(s, encoding='UTF-8'):
byte_string = ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))
return byte_string.decode(encoding)
</code></pre>