CPU大小端字节序的检测

2024-09-07 12:08
文章标签 大小 检测 cpu 字节

本文主要是介绍CPU大小端字节序的检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


    机器的字节序有两种,即大端字节序和小端字节序。
大端字节序:在内存中,低地址存放数据的 高位,高地址存放数据的 低位
小端字节序:在内存中,低地址存放数据的 低位,高地址存放数据的 高位
如例:定义数据  a = 0x01020304
小端方式:01 02 03 04
大端方式:04 03 02 01
那么如何判断呢,方式如下-->
一、 指针方式
代码如下:
说明:在此我定义了一个全局变量a,方便与用objdump工具查看程序数据段的存储
如上,定义了一个整形的32位宽的变量 a , 然后用字符型指针强转后解引用并打印出值。整形是占4个字节的,若转成字符型必定会丢失数据,因内存中数据是顺序存储的,所以强转后解引用会取出低一个字节的数据,由此我们可以根据那一个字节的数据来判断到底是大端字节序还是小端。
如上程序,运行一下,如果打印的结果是4的话表明是小端字节序,是 1 的话表示是大端字节序
运行程序,结果如下:
打印结果为4,表明我机器的CPU的字节序为小端模式
下面,用 objdump 工具来验证一下,中断中敲命令,后跟程序的可执行文件
因为我定义的是全局变量,所以查找数据段的内容。在此要用到一个数据,就是我打印的变量 a 的地址,上图:
如上图,a的地址是804a014 ,根据此地址找到基地址 804a00c , 向右偏移8个字节后就是变量 a 的地址, 如红线所示,存储顺序为04030201, 表明是小端字节序。

二、联合体方式
    代码如下:
如上图,欲知此程序的运行结果,我们还需要了解联合体的特性。
联合体也叫做共用体,即它不同与结构体,它只有一片内存,而且片内存区域是联合体中的所有成员所共享,且它的大小为联合体中最大的那个成员所占的空间,如上图,则它的内存为4个字节。
由于我们先给 a 赋值,则内存中存放的数据应为 0x00 00 00 01 , 档用字符型的b变量从共享内存中取数据时只能取得低字节的数据, 即 01 。
在此,如果是小端字节序的话,那么它取得的数据应该是01,如果是大端字节序的话,那么取得的数据应该是 00. 运行程序,结果如下:
如上图,结果为1, 为小端字节序。

这篇关于CPU大小端字节序的检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145017

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景