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

查看字节真实二进制形式示例解析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 位,符合字节的固定长度特性。
  • 可读性:用空格分隔二进制字符串,便于观察每个字节的细节。
  • 兼容性:适用于任意字节流(如图片、加密数据等)。

应用场景

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

相关文章:

  • 【教程】Docker方式本地部署Overleaf
  • RHCE认证通过率
  • 建筑工程管理核心功能解析与2025年TOP5系统深度测评(附智能化转型必备工具对比)
  • WPF Datagrid 数据加载和性能
  • 内存虚拟盘(RAMDisk)是什么?
  • 构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
  • 【Linux Nano Vim快捷键大全】
  • [特殊字符] VMware虚拟机挂起后Docker容器MySQL无法连接的解决方案
  • BitMart合约交易体验 BitMart滑点全赔的底层逻辑
  • Soundness Gitpod 部署教程
  • MVCC:数据库并发控制的利器
  • 深度理解指针(2)
  • Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
  • 计算机组成与体系结构:缓存设计概述(Cache Design Overview)
  • Eslint和perrier的作用
  • contains方法的实现对比
  • leetcode二叉树相关题目复习(C语言版)
  • PDF Base64格式字符串转换为PDF文件临时文件
  • 具身智能梳理以及展望
  • 读入csv文件写入MySQL
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 山东:小伙为救同学耽误考试属实,启用副题安排考试
  • 男子退机票被收90%的手续费,律师:虽然合规,但显失公平
  • 中美发布日内瓦经贸会谈联合声明达成关税共识,外交部回应
  • 民生谣言误导认知,多方联动守护清朗——中国互联网联合辟谣平台2025年4月辟谣榜综述