首页 > 其他分享 >字节序说明并用C语言实现转换

字节序说明并用C语言实现转换

时间:2023-02-01 22:34:19浏览次数:41  
标签:return 字节 val 并用 C语言 int 地址 内存


反转字节序之大小端转换


什么是大端和小段?

字节序说明并用C语言实现转换_C语言举个例子,比如int类型的数:0x12345678在内存中的表现形式。

1)大端模式:Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
低地址 --------------------> 高地址
0x12 | 0x34 | 0x56 | 0x78

2)小端模式:Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

低地址 --------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12

代码

1、检测大小端

int isBigEndian(void)
{
int val = 0x12345678;
char ch = *((char *)&val);
return ch == 0x12 ? 1 : 0;
}

2、字节序反转

(1)int类型转换

u32 swap_uint32(u32 val)
{
return (((val << 24) & 0xFF000000) | ((val << 8) & 0x00FF0000) | ((val >> 8) & 0x0000FF00) | ((val >> 24) & 0x000000FF));
}

(2)short类型转换

u16 swap_uint16(u16 val)
{
return (((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF));
}

ends…


标签:return,字节,val,并用,C语言,int,地址,内存
From: https://blog.51cto.com/u_15950551/6031944

相关文章

  • C语言实现查找一组数中的最大和最小值
    查找一组数中的最大、最小值/***查找一组数中的最大数*@paramnums数组指针*@paramstepsizeof(type)*@paramn该组数中有几个数*@return未找到返......
  • C语言基础:结构体对齐规则与0字节数组
    C语言基础:结构体对齐规则与0字节数组不同的编译器和系统默认的对齐规则会有差异,这里我使用的win32的MinGWC语言结构体一般是默认四字节对其的。结构体对其规则一般的,C语言结......
  • C语言&C++
    C语言和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,不管什么人想......
  • 初识C语言1
    #include<stdio.h>//standardinputoutputintmain()//主函数程序的入口,有且仅有一个{printf("helloworld");//printfunction打印函数return0;}C语言中的变量类型:char......
  • C语言练习------打字游戏
    1打字游戏(1)随机函数A:srand((unsigned)time(NULL));以当前时间为准,设置随机种子。注意:此函数,在每次开始游戏后调用一次即可。B:ch=rand();注意:rand()函数,每调用一次,产生一......
  • C语言-printf函数
    转换字符参数类型;转换结果cchar;字符dint;有符号十进制整数i同上edouble;以指数形式输出单、双精度浮点数(小写e)E同上(大写E)fdo......
  • C语言中return和exit的区别
    转载自:http://jszx.cuit.edu.cn/NewsCont.asp?bm=00&type=888&id=20050 1.exit用于在程序运行的过程中随时结束、终止程序,exit的参数是返回给OS的。main函数结束时(使用r......
  • 判断大小端--C语言版
    首先,什么是大小端存储方式?大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的......
  • 嵌入式开发中一些少见的C语言用法
    使用STM32开发的朋友不知道是否有发现过这样的一些宏定义?如下:#ifdefined(__CC_ARM)#pragmaanon_unions#endif看到上面的语句一开始确实搞不懂为什么要写这些东西,通过上......
  • Jmeter学习:利用JDBC采样器从数据库取业务数据,进行变量参数化,并用于后续的业务请求
    1.设计JDBC配置元件、JDBC采样器2.JDBC采样通常设置为单次执行3.配合ForEach循环,进行变量的循环提取(方法一)采用随机数进行随机提取,示例代码如下:(方法二)//......