大小端

Qt|大小端数据转换 我的机器cpu,如果不采取任何处理,这里输出的确实是小端数据,如果是大端那么就会输出对应的“1234567843218756”。如果上文中举例的协议定的就是小端数据传输那么就是这样写,无需做任何处理。后面打算写Qt关于网络编程的博客,网络编程就绕不开字节流数据传输,字节流数据的传输一般是根据协议来定义对应的报文该如何组包,那这就必然牵扯到了大端字节序和小端字节序的问题了。回到关于大小端的问题,代码里面采用的是结构体转QByteArray,这样就牵扯到了依靠系统自己的大小端来处理了,代码不灵活。 阅读详情

1、概念:
大端:数据的高位存放在地址的低位。
小端:数据的高位存放在地址的高位。
pc机一般都是小端模式:
2、如何测试你的机子是大端还是小端:
方法一:

1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 int main(void)
  5 {
  6     int a=1;
  7     a=a>>8;
  8     if(a==0)
  9     {
10         printf("小端!\n");
11     }
12     else
13     {
14         printf("大端!\n");
15     }
16     return 0;
17 }

高地址<===========低地址
大端存放数字1:1000 0000
小端存放数字1: 0000 0001
将数字1右移8位后:
大端:0000 1000
小端:0000 0000
所以可以判断右移8位以后数字的取值来判断到底是大端还是小端

方法二:



  1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 int main(void)
  5 {
  6     int a=1;
  7     char c=(char)a;
  8     if(c!=0)
  9     {
10         printf("小端\n");
11     }
12     else
13         printf("大端\n");
14     return 0;
15 }

原理:
高地址<===========低地址
大端存放数字1:1000 0000
小端存放数字1: 0000 0001
将整形数据1,强制转换为char型时:
大端:0000;
小端:0001;

方法三:

1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 typedef union Test{
  5     int a;
  6     char b;
  7 }T;
  8
  9 int main(void)
10 {
11     T t;
12     t.a=1;
13     (t.b)?(printf("小端\n")):(printf("大端\n"));
14     return 0;
15 }

方法 三的原理何和方法二原理差不多,只不是这里使用了联合体,联合体里面的变量共享一个内存空间

C语言中的大小端 文章目录1.什么是大小端2.大小端的意义3.如何确定大小端3.1使用联合体来检测 1.什么是大小端 大小端是内存存储字节的两种方式,一个是大端存储,一个是小端存储。采用大小模式对数据端进行存放的主要区别在于存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。 大端存储:就是把一个数的低位字节序的内容存放到高地址处,高位字节序的内容存放在低地址处。 小端存储:就是把一个数的低位字节序的内容存放到低地址处 阅读详情

相关推荐

【C++】什么是大小端,如何判断大小端

文章目录什么是大小端大小端与操作系统有关嘛如何判断大小端方法一方法二 什么是大小端 大小端也可以理解为字节顺序,或者端序、尾序,就是大端序(Big-Endian)、小端序(Little-Endian)。 1.大端模式:是指数据的高字节保存在内存的低地址中; 2.小端模式:是指数据的高字节保存在内存的高地址中; 例如0x12345678 大小端与操作系统有关嘛 大小端与操作系统是没有关系的 大小端主要有用于存储的顺序,与存储器(硬件)关系比较大 编译器和操作系统仅仅是配合CPU编译好相应的代码,而

风铃的博客 4515

大小端问题

最近在项目进行中遇到了大小端配置问题。 需要在FPGA中给DSP配置大小端工作模式,所以查阅了一些大小端的博客。 大小端解析         端模式出自Jonathan Swift书写的《格列佛游记》一书,这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是...

zpc0212的博客 1899

正确区分大小端模式

正确区分大小端模式 嵌入式开发经常会遇到大小端的问题,往往学习后,过一段时间就又忘记了,这里总结一下,希望给大家留下深刻的记忆。 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端和大端两种字节顺序,这两种你只需要深刻地记住其中的一种就可以,另一种恰好和它相反,不需要刻意记忆了,那么我们就记住“大端模式”吧。 大端模式(Big-Endian):是指数据的高字节保存在内存的...

papership的博客 6012

大小端及内存对齐问题细议

在接触PowerPC开发时,难免会碰到大小端转换的问题,PowerPC系统核心是大端的,而像DMA、DSP、PCIE、FPGA都是小端的,所以有必要把它们详细记录一下。我们常常看到“alignment", "endian"之类的字眼, 但很少有C语言教材提到这些概念。实际上它们是

JuanA1的专栏 1万+

大小端字节序详解

正确区分大小端字节序,手把手带你做大小端面试题。

威威的博客 6542

Java使用ByteBuffer处理大小端踩坑

Java使用ByteBuffer处理大小端踩坑1. 什么是大小端2 踩坑 1. 什么是大小端 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。 JVM默认为大端模式 ByteOr

ZyManTou的博客 6170

x86、ARM分属大小端

等等

Mr_liu_666的博客 1万+

Mixer-First Receiver适用于宽带阵列应用的接收机技术1

Mixer-First Receiver适用于宽带阵列应用的接收机技术1技术的背景单元级数字化阵列传统链路到Mixer-First链路的逻辑考虑三种场景小结 技术的背景 在文章《吊打全球的顶级毫米波数字阵列项目-MIDAS》中提到了DARPA在MIDAS项目中在毫米波实现宽带单元级数字化阵列用到了一个关键的叫做N-Path filter的技术,而这个技术同样出现在了《让微波射频工程师颤抖的芯片-MATRICs》的MATRICs芯片中。 为什么DARPA的各个合作研究机构选择这种技术?这篇来自Universi

ICONO的博客 2167

什么是大小端模式,写个程序判断本机是大端还是小端模式

面试常见问题:什么是大小端?写个程序判断本机是大端格式还是小端格式?先来简单的讲下什么是大小端模式,以及两个模式的区别:所谓大小端模式就是存储数据时,数据的高低位怎么存储在地址的高低位上。(位指的是bit,一个char类型数据有8位) 大端模式:数据的高位,存放在地址的低位。(高位存低位,低位存高位) 小端模式:数据的高位,存放在地址的高位。(高位存高位,低位存低位) 我们的pc机一般都是小端模式,个人感觉这也更符合我们的习惯,在地位置的就是低位数据。下面举个

YuZhiHui_No1的专栏 7679

5.1 Tessent Atpg系列 第八章 Test Pattern Generation - Verify Test Pattern

为什么要做基于timing的仿真,意义在于可以比较ATPG工具和simulator工具的差异性。因为时序的差异导致不同的结果。首先你需要通过write_patern 这句cmd来写出pattern,默认是parallel 模式,除非你用-serial 指定写出serial, 因为serial 文件非常大,所以你可以使用-sample 开关写出部分pattern即可,工具会根据每一种pattern 类型都会至少保存一只。 另外,你也可以使用-start -end 开关来减少文件大小,但是这样的截取,是不可靠的

ciscomonkey的博客 7759

ANSYS Fluent DPM实战:从单点到锥形注入的粒子模拟全流程解析

本文深度解析了ANSYS Fluent中离散相模型(DPM)的粒子注入(Injection)设置全流程。从单点注入到锥形喷雾,详细阐述了不同注入类型的物理本质、参数逻辑与适用场景,并提供了粒径分布、湍流扩散等高级参数设置技巧与实战避坑指南,帮助工程师精准模拟喷雾、粉尘等粒子运动行为。

weixin_29276847的博客 651

FPGA开发相关笔记(一)

在计算机中,和是描述的两种方式。简单来说,它们决定了一个由多个字节组成的数据(如 16 位整数、32 位整数等)中,高位字节和低位字节在内存地址中的排列顺序。

zh9468y的博客 606

Python读取三菱PLC数据

3、支持自定义的数据读写操作。直接调用Read方法,可以读取到原生的byte数组,然后进行组合数据。1、每次的数据交互您都可以判断是否成功,如果您不判断,如果网络断开或是异常,会影响程序的执行。Qna3E协议的ascii类 MelsecMcAsciiNet。A兼容1E协议的二进制类 MelsecA1ENet。Qna3E协议的二进制类 MelsecMcNet。2、读写操作支持单个数和数组。

weixin_46744807的博客 1998

C语言:大小端模式、判断大小端、大小端转换

对于一个存储空间大于 1 个字节的数据,在内存中有两种存储模式, 大端模式 (big-endian):数据的高字节在内存的低地址存放,数据的低字节在内存的高地址存放 小端模式 (little-endian):数据的高字节在内存的高地址存放,数据的低字节在内存的低地址存放。判断主机字节序 (主机大小端),可以用联合体(union),指针,强制转换成 char 类型等方法。用位操作进行大小端转换,在网络编程中,也可以使用 htonl, htons, ntohl, ntohs 等函数。

天道酬勤 2万+

从放弃到再入门之拉格朗日对偶问题推导

普通同学的解法 无约束条件:求导就可以了 等式约束:代入消元,再求导 不等式约束:分情况讨论(在边界上和不在边界上),分别对应1,2的情况 然而发现,有些情况消元特别复杂,甚至不能求解 聪明同学的解法 发现:在最优点的情况下,约束曲面的法向量和目标函数的梯度反向必相同或相反 拉格朗日乘子法如何理解? (在2维里可以形象的解释为z=f(x,y)在约束条件g(x,y)=c中,极值...

qq_34564612的博客 1万+

实测iOS和安卓大不同!用NFC触发小程序跳转的完整避坑指南(含NFC Tools配置)

本文深入解析iOS与安卓在NFC触发小程序跳转时的核心差异,提供微信与支付宝小程序的NFC实现方案及优化技巧。涵盖跨平台兼容性测试方法论、性能优化策略及异常处理方案,帮助开发者避开常见陷阱,提升跳转成功率。特别针对NFC Tools配置和微信Universal Link使用进行详细指导。

asdfghjkl978564的博客 433

什么是大小端,数组大小端,位域大小端,结构体大小端

什么是大小端,数组大小端,位域大小端,结构体大小端

linux,单片机,杂记 5460

手把手教你学Simulink--基于多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、燃料电池子系统、锂电池子系统、能量管理、电机驱动等模块,通过协同控制优化能源分配。详细说明了从模型创建到各子系统设置的7个步骤,并提供了MATLAB代码示例。该仿真可评估不同工况下的系统响应速度、能量利用效率和电池寿命等性能指标,为混合动力汽车的能量管理策略设计和优化提供参考。

MHD0815的博客 238

什么是大小端?如何确定大小端?

一、什么是大小端? 对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端(big-endian)字节序。 假如现有一32位int型数0x12345678,那么其MSB(Most Significant Byte,最高有效字节)为0x12,其LSB...

wwwlyj123321的博客 12万+

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1227

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

什么是大小端?怎么分辨大小端?

大小端是针对非单字节数据的存取,比如short型,int型等。大端存储是将数据的高位存储在内存的低地址处,小端存储是将数据的低位存储在内存的低地址处。

m0_58250087的博客 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

STM32的大小端模式——什么是大小端模式?

目录什么是大小端模式为什么会有大小端模式之分什么情况需要考虑大小端模式常见的设备的大小端模式测试大小端模式例程 什么是大小端模式 大端模式Big-Endian:高字节存于内存低地址,低字节存于内存高地址。 小端模式Little-Endian:低字节存于内存低地址,高字节存于内存高地址。 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。 首先我们来看下数据在大小端两种模式下存储图,假设有一个整型数0x12345678,从图中可以看出明

a只如初见的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一文看懂计算机中的大小端(Endianess)

本文主要探讨计算机中大小端的相关概念以及如何进行大小端的判断和转换等。

Mr_Jaychong的博客 1万+

计算机大小端以及大小端查看

数据在计算机中存储的时候,分为大端存储和小端存储,每个计算机的大小端存储都不同,为了了解自己的机器中的大小端类型,可以通过很多方法查看。这里我们主要讲解两种查看大小端的方法。 那么到底什么是大小端呢? 大端存储是 数据的低位存储在高地址处 小端存储是 数据的低位存储在低地址处 我个人在理解的时候,将大小端的存储理解为数据在存储的时候,可以分为从内存的 低到高 存储和从 高到低 存储,也可以理解为从内存的头部开始存储和从尾巴开始存储,这样就可以理解了吧。从头开始存...

【欢迎关注公众号:冬瓜白】 2231

位域与大小端

C中的位域与大小端问题(整理自网上资料) 字节内也是有大小端问题,与字节中的大小端类似: 1)little endian中的位应该这样排列:  01234567  即排在前面的是低位。因此,先分配least significant bits  2)而在Big endian中,位应该这样排列:  76543210  即排在前面的是高位。因此,先分配most significan

qk835320459的专栏 1万+
上一篇: fsleek的用法
下一篇: 排序算法---插入排序、选择排序、希尔排序、冒泡排序、快速排序、归并排序、堆排序
ffsiwei
博客等级 码龄9年 72粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值