python 字符串的比特
时间: 2023-10-19 18:09:26 浏览: 192
Python中的字符串是由Unicode字符组成的,每个字符占用一个或多个字节。如果要查看字符串中每个字符的比特表示,可以使用Python内置的ord()函数和bin()函数。
例如,对于字符串s中的第一个字符,可以使用以下代码查看其比特表示:
```
s = "hello"
print(bin(ord(s[0]))[2:].zfill(8))
```
输出结果为:
```
01101000
```
相关问题
解析十六进制字符串变成比特流数组
可以使用Python内置的`binascii.unhexlify()`方法将十六进制字符串转换成二进制数组,然后将二进制数组中的每个字节转换成对应的比特流数组,示例如下:
```python
import binascii
hex_str = '1a2b3c4d'
binary_array = binascii.unhexlify(hex_str)
bit_array = []
for b in binary_array:
for i in range(8):
bit = (b >> i) & 1
bit_array.append(bit)
print(bit_array)
```
输出结果为:
```
[1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]
```
其中,`b >> i`表示将字节b向右移动i位,`& 1`表示将结果和1按位与运算,得到最低位的比特值。
编写一个程序,提示用户输入文件名,从文件读取字节,然后显示每个字节的十六进制表示形式。提示:可以先将字节值转换为一个8比特的字符串,然后再将比特字符串转换为一个两位的十六进制字符串。
好的,以下是 Python 代码实现:
```python
filename = input("请输入文件名:")
with open(filename, "rb") as f:
byte = f.read(1)
while byte != b"":
hex_string = ""
for bit in bin(byte[0])[2:].zfill(8):
hex_string += str(hex(int(bit))[2:])
print(hex_string, end=" ")
byte = f.read(1)
```
解释一下:
1. 首先,提示用户输入文件名,并将其存储在变量 `filename` 中。
2. 然后,使用 `with open(filename, "rb") as f` 打开文件,并指定以二进制模式读取。
3. 在一个 `while` 循环中,读取文件中的每个字节,并将其存储在变量 `byte` 中。
4. 如果 `byte` 不为空字符串(即还有未读取的字节),则将其转换为一个八比特的字符串,并将每个比特转换为两位的十六进制字符串,最后将它们拼接在一起。
5. 最后,打印出十六进制字符串,并继续读取下一个字节,直到读取完整个文件。
注意,`bin()` 函数将字节转换为八比特的字符串,`int()` 函数将比特转换为整数,用于将 0 和 1 转换为十六进制字符串。
阅读全文
相关推荐














