温馨提示×

怎么提取二进制字符串

小樊
42
2026-08-02 06:56:00
栏目: 编程语言

要从二进制字符串中提取信息,关键看你的目标是什么。下面按常见场景给你说明,并附上示例代码(以 Python 为主)。


一、什么是“二进制字符串”

通常指两种形式之一:

  1. 文本形式的二进制字符串
s = "10110101"
  1. 真正的二进制数据(bytes)
b = b'\xa5\xb3'

二、常见提取方式

✅ 1. 提取某一位(bit)

文本二进制字符串

s = "10110101"
bit = s[2]   # 第3位(从0开始)

bytes 中提取某一位

b = b'\xa5'  # 10100101
byte = b[0]

bit = (byte >> 2) & 1   # 取第3位

✅ 2. 提取某几个 bit(位段)

例如:从第 2 位开始,取 3 位

byte = 0b10110101
mask = 0b111 << 2
bits = (byte & mask) >> 2

✅ 3. 二进制字符串 → 整数

s = "10110101"
value = int(s, 2)

✅ 4. 提取多个字节中的字段(协议解析常用)

例如:一个 2 字节数据,高 4 位和低 12 位含义不同

data = b'\x12\x34'
value = int.from_bytes(data, byteorder='big')

high = (value >> 12) & 0xF
low  = value & 0xFFF

✅ 5. 按固定长度分割二进制字符串

s = "101101011110"
n = 4
parts = [s[i:i+n] for i in range(0, len(s), n)]
# ['1011', '0101', '1110']

✅ 6. 从二进制文件中提取数据

with open("data.bin", "rb") as f:
    data = f.read()

first_byte = data[0]

✅ 7. 使用 struct 提取结构化数据(非常常用)

import struct

data = b'\x01\x02\x03\x04'
a, b = struct.unpack('<HH', data)  # 小端,两个 unsigned short

三、如果你有具体场景

你可以直接告诉我:

  • 二进制字符串长什么样?
  • 想提取什么?(某一位 / 某个字段 / 转成整数 / 解析协议)
  • 用什么语言?

我可以给你精确代码

0