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

2023-10-27

反转字节序之大小端转换


什么是大端和小段?

         ~~~~~~~~         举个例子,比如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…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字节序说明并用C语言实现转换 的相关文章

  • flask_wtf中的参数介绍(StringField,PasswordField...)

    WTForms支持的HTML标准字段 字段类型 说 明 StringField 文本字段 TextAreaField 多行文本字段 PasswordField 密码文本字段 HiddenField 隐藏文本字段 DateField 文本字段
  • 【Java基础】IO流(二)

    个人简介 gt 个人主页 是Lay的主页 gt 学习方向 JAVA后端开发 gt 种一棵树最好的时间是十年前 其次是现在 gt 往期文章 Java基础 File类 IO流 gt 喜欢的话麻烦点点关注喔 你们的支持是我的最大动力 目录 1 字
  • Kali Linux网络攻击

    文章目录 一 Kali Linux 使主机和虚拟机IP处于同一网段 1 关机 点击edit 虚拟机 2 网络连接 选择桥接bridge模式 3 现在开机 就和主机在同一网段下 可以fping g查找其它的IP地址了 二 查看局域网下所有ip

随机推荐