Python 使用print输出二进制文件时产生的错位

项目实践中,

with open(fileName, 'rb') as f: result = f.read()print(result)f.close()

打开二进制文件,打印出的结果会出现有些\x后面有好几个字符的情况
在这里插入图片描述
但实际这串数字是
在这里插入图片描述

这种情况是因为print函数将二进制数据解释为字符串并以其字节值的十六进制表示形式显示不可打印字符。

要避免这种情况,解决方法是:

  1. 使用hex()方法:将二进制数据转换为十六进制字符串,这样每个字节都会以两个字符表示。
with open('fileName', 'rb') as f:result = f.read()print(result.hex())
  1. 使用binascii模块:该模块提供了将二进制数据转换为十六进制表示的便捷方法。
import binasciiwith open('fileName', 'rb') as f:result = f.read()print(binascii.hexlify(result).decode('ascii'))
  1. 使用repr()函数:虽然这不会完全避免\x的出现,但它会确保所有不可打印字符都被正确地转义并显示。(不推荐)
with open('fileName', 'rb') as f:result = f.read()print(repr(result))

示例代码如下:

with open(fileName, 'rb') as f: result = f.read()print(result)f.close()
print(result.hex())
print(binascii.hexlify(result).decode('ascii'))
print(repr(result))

运行结果
在这里插入图片描述
这里不推荐第三种方式,他虽然能保留字节的形式,但不一定就能解析正确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中如何自定义异常进行抛出,并且定义全局异常处理类进行捕获异常(详细讲解)?

1.先理解为什么要抛出异常? 一句话就是为了终止程序,一般是终止业务层也就是service层。 2.为什么要自定义异常抛出? 因为系统提供的异常种类很多,而且代表的含义很多,所以我们需要自己定义一个通用的异常&#xff0…

白帽子最喜欢用什么渗透测试工具?看看哪些是你用过的

一、白帽子最喜欢用什么安全工具? 2020 年的 HackerOne 黑客报告中,统计过白帽子们最喜欢用的软硬件工具。 从图中可以看到,89% 的白帽子都会使用 Burp Suite 这个 Web 应用安全测试工具,有 39% 会尝试自己写工具,第三名的 Fuzzers 是模糊测试工具。再后面主要是一些代理…

STM32-17-DAC

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU STM32-14-FSMC_LCD STM32-15-DMA…

k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案

文章目录 OpenKruise简介OpenKruise来源OpenKruise是什么?核心组件有什么?有什么特性和优势?适用于什么场景? 什么是OpenKruise的原地升级原地升级的关键特性使用原地升级的组件原地升级的工作原理 应用环境一、OpenKruise部署1.安…

ThreadLocal 详讲

ThreadLocal ThreadLocal是一个将在多线程中为每一个线程创建单独的变量副本的类; 当使用ThreadLocal来维护变量时, ThreadLocal会为每个线程创建单独的变量副本, 避免因多线程操作共享变量而导致的数据不一致的情况。 ThreadLocal 使用 public class ThreadLocalTest {priv…

ssm宠物网站系统-计算机毕业设计源码07183

摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台。宠物网站每天都有大量的信息需要通过网络发布,为此,本人开发了一个基于B/S(浏览器/服务器)模式的宠物网站系统。 该系统以JJava编程语言、MySQL和SSM框…

Linux sudo -i取消密码的方法

直接修改 /etc/sudoers 文件来实现 sudo -i 无需密码的配置。以下是具体步骤: 步骤 打开终端并使用 visudo 命令编辑 /etc/sudoers 文件 使用 visudo 编辑 sudoers 文件是推荐的方法,因为它会在保存前进行语法检查,防止出现配置错误。 sudo …

基于 VITA57.1 标准的 2 收 2 发射频子卡(国产 ADRV9009子卡)

FMC159 是一款基于 VITA57.1 标准规范,实现 2 收 2 发的射频子模块,该板卡基于国产化 ADRV9009 射频收发器,涵盖了50MHz~6GHz 频段,并集成了双通道收发链路,发送最大实时带宽可到 450MHz,接收最大带宽可以到…

十进制、二进制、十六进制之间的相互转换

实验目的 实现int 、float 转换为字符串并显示 实现数字字符以二进制、十进制、十六进制显示 实现十进制、二进制、十六进制之间的相互转换 #include "numconvert.h" #include "ui_numconvert.h"NumConvert::NumConvert(QWidget *parent): QWidget(parent)…

C#特性-CallerMemberName、CallerFilePath和CallerLineNumber的介绍和应用

介绍 在csharp中,CallerMemberName, CallerFilePath, 和 CallerLineNumber 是编译时常量,它们是csharp 5.0引入的特性,用于提供有关调用堆栈的信息,通常用于日志记录和调试。这些特性可以自动填充方法的参数,无需显式…

软考初级网络管理员__网络单选题

1.观察交换机状态指示灯初步判断交换机故障,交换机运行中指示灯显示红色表示()。 警告 正常 待机 繁忙 2.通常测试网络连通性采用的命令是()。 Netstat Ping Msconfig Cmd 3.一台16端口的交换机可以产生()个冲突域? 1 4 15 16…

jQuery 常用函数解析

简介 jQuery 是一个流行的 JavaScript 库,它极大地简化了网页开发中的常见任务。在本文中,我们将深入探讨 jQuery 中一些非常有用的函数,包括 parent、find、siblings、prop、hasClass、removeClass、addClass、empty、append、text、val、r…

安装 Nuxt.js 的步骤和注意事项

title: 安装 Nuxt.js 的步骤和注意事项 date: 2024/6/17 updated: 2024/6/17 author: cmdragon excerpt: Nuxt.js在Vue.js基础上提供的服务器端渲染框架优势,包括提高开发效率、代码维护性和应用性能。指南详细说明了从环境准备、Nuxt.js安装配置到进阶部署技巧&…

3D元宇宙虚拟主播引领文旅产业迈向更加美好的未来!

随着文旅产业的蓬勃发展,3D数字代言人的应用正逐渐改变着传统的文旅传播方式。文旅3D数字代言人搭建编辑器的出现,正是满足大部分文旅产业借助数字人浪潮,将传统文化与现代科技完美融合的创新之举。 文旅3D数字代言人搭建编辑器不仅满足了Z世…

SelfGNN: Self-Supervised Graph Neural Networks for Sequential Recommendation

SelfGNN: Self-Supervised Graph Neural Networks for Sequential Recommendation(Sigir2024) 摘要 顺序推荐通过对用户的时间和顺序交互模式进行建模,有效地解决信息过载问题。 为了克服监督信号的局限性,最近的方法在推荐系统中…

奇安信齐向东:AI驱动安全,应对数字经济时代挑战

随着数字经济的蓬勃发展,网络安全问题日益凸显,AI技术的融入为网络安全带来了新的机遇和挑战。近日,备受瞩目的2024全球数字经济大会数字安全高层论坛暨北京网络安全大会战略峰会(简称“BCS大会”)在北京盛大开幕。本次…

GPT-4o的视觉识别能力,将绕过所有登陆的图形验证码

知识星球🔗除了包含技术干货:《Java代码审计》《Web安全》《应急响应》《护网资料库》《网安面试指南》还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 我们来看一下市面上常见的图形验证…

3、双分支判断 - 课件

一、双分支的基本语法结构 双分支结构,也称为if-else语句,其基本语法如下: if (判断表达式) {// 条件为真时执行的代码块 } else {// 条件为假时执行的代码块 }说明: 判断表达式是一个布尔表达式,它的值为真(true)或假(false)。如果判断表达式的值为真,执行if后面的代码块;如…

Redis:原理、概念、用法与实例解析

Redis:原理、概念、用法与实例解析 在当今风起云涌的技术领域中,Redis 犹如一颗璀璨的明星,闪耀着独特的光芒。它作为一种备受瞩目的数据存储和缓存解决方案,以其卓越的性能、丰富多样的功能以及简单易用的特性,成为了…

【WEEK16】学习目标及总结【Spring Boot】【中文版】

学习目标: 学习SpringBoot 学习内容: 参考视频教程【狂神说Java】SpringBoot最新教程IDEA版通俗易懂Dubbo和Zookeeper集成 学习时间及产出: 第十六周TUE~FRI 2024.6.11【WEEK16】 【DAY2】Dubbo和Zookeeper集成第二部分【中文版】【WEEK16…