当前位置: 首页 > web >正文

查看字节真实二进制形式示例解析1

在这里插入图片描述

查看字节的真实二进制形式?

若需要显式查看二进制0/1,可以通过以下方法转换:

方法1:逐字节转换为二进制字符串

def bytes_to_binary(data: bytes) -> str:return ' '.join([bin(byte)[2:].zfill(8) for byte in data])# 示例
bytes_data = "你好".encode("utf-8")  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
binary_str = bytes_to_binary(bytes_data)
print(binary_str)
# 输出: 11100100 10111101 10100000 11100101 10100101 10111101

功能说明

该函数将输入的 字节流(bytes) 转换为一个由 8 位二进制字符串 组成的序列,每个二进制字符串之间用空格分隔。例如:
输入 b'\xe4\xbd' 会转换为 11100100 10111101


代码逐行解析

1. bin(byte)[2:]
  • 作用:将单个字节(整数)转换为二进制字符串,并去掉前缀 0b
  • 示例
    byte = 0xe4  # 十进制为 228
    bin(byte)        # 输出: '0b11100100'
    bin(byte)[2:]    # 输出: '11100100'
    
2. .zfill(8)
  • 作用:将二进制字符串填充到 8 位(不足 8 位时左侧补零)。
  • 示例
    bin(3)[2:]           # 输出: '11'(二进制为 0b11)
    bin(3)[2:].zfill(8)  # 输出: '00000011'
    
3. 列表推导式 [ ... for byte in data]
  • 作用:遍历字节流 data 中的每个字节,逐个转换为 8 位二进制字符串。
  • 示例
    data = b'\xe4\xbd'  # 字节流包含两个字节:0xe4 (228), 0xbd (189)
    [bin(byte)[2:].zfill(8) for byte in data]
    # 输出: ['11100100', '10111101']
    
4. ' '.join(...)
  • 作用:将列表中的二进制字符串用空格连接成一个完整字符串。
  • 示例
    ['11100100', '10111101']'11100100 10111101'
    

示例运行过程

bytes_data = "你好".encode("utf-8")  # 编码为字节流: b'\xe4\xbd\xa0\xe5\xa5\xbd'
binary_str = bytes_to_binary(bytes_data)
print(binary_str)
# 输出: 11100100 10111101 10100000 11100101 10100101 10111101
步骤分解
  1. 编码字符串
    • “你好” 的 UTF-8 编码为 6 个字节:0xe4, 0xbd, 0xa0, 0xe5, 0xa5, 0xbd
  2. 逐个字节处理
    字节(十六进制)十进制值二进制(补零到 8 位)
    0xe422811100100
    0xbd18910111101
    0xa016010100000
    0xe522911100101
    0xa516510100101
    0xbd18910111101
  3. 拼接结果
    将上述二进制字符串用空格连接,得到最终输出。

关键特性

  • 填充保证:确保每个二进制字符串长度为 8 位,符合字节的固定长度特性。
  • 可读性:用空格分隔二进制字符串,便于观察每个字节的细节。
  • 兼容性:适用于任意字节流(如图片、加密数据等)。

应用场景

  • 调试网络协议:查看原始字节流的二进制形式。
  • 数据加密/编码:分析二进制级别的数据变换。
  • 硬件交互:处理需要精确控制二进制的设备(如串口设备)。
http://www.xdnf.cn/news/6084.html

相关文章:

  • NAT/代理服务器/内网穿透
  • 容器编排的革命:Kubernetes如何引领IT的云原生时代
  • 高并发内存池(四):Page Cache结构设计
  • How Sam‘s Club nudge customers into buying more
  • PTA编程题: 异常处理(python)
  • AI-02a5a5.神经网络-与学习相关的技巧-权重初始值
  • 联邦+反射器 基础实验
  • TTL、RS-232、RS-485电平转换详解
  • 系统漏洞扫描服务:维护网络安全的关键与服务原理?
  • 【Linux】Linux 的管道与重定向的理解
  • Python中列表(list)知识详解(2)和注意事项以及应用示例
  • 【Linux C/C++开发】轻量级关系型数据库SQLite开发(包含性能测试代码)
  • 音频生成技术的前沿探索:从语音合成到智能Podcast
  • 【VS】VS2019中使用rdlc报表,生成之前修改XML
  • 基于地图的数据可视化:解锁地理数据的真正价值
  • 第五部分:第二节 - Node.js 核心模块:厨房里的基本工具
  • Android架构之自定义native进程
  • 需求实现与测试验证脱节,如何确保产品质量
  • 【大模型面试每日一题】Day 17:解释MoE(Mixture of Experts)架构如何实现模型稀疏性,并分析其训练难点
  • Cadence软件浮点许可优化管理方案助力企业降本增效
  • 通过SSRF击穿内网!kali-ssrf靶场实战!
  • Maven插件学习(七)—— Toolchains设置项目单独构建JDK(或其他工具)
  • CAN(控制器局域网络)协议详解
  • 反射(Reflection)详解
  • leetcode0295. 数据流的中位数-hard
  • python数据分析常用的10个核心库
  • gradle--问答
  • Vxworks 系统详解
  • Realtek 8126驱动分析第四篇——multi queue相关
  • vLLM Serve 命令参数详解