C语言:无符号16位数据小端模式转换为大端模式

目录

示例:

代码实现:

解释:

输出:

详细说明:


要将无符号 16 位数据从小端模式转换为大端模式,可以通过交换字节的方式来实现。小端模式和大端模式的区别在于字节的存储顺序:

  • 小端模式:最低有效字节(LSB)存储在低地址,最高有效字节(MSB)存储在高地址。
  • 大端模式:最高有效字节(MSB)存储在低地址,最低有效字节(LSB)存储在高地址。

示例:

假设需要操作的一个无符号 16 位数据 0x1234(即 16 位数值为 0001 0010 0011 0100),在小端模式下它将被存储为 0x34 0x12,而在大端模式下,它应该被存储为 0x12 0x34

代码实现:

你可以通过字节交换的方式来完成这种转换:

#include <stdio.h>
#include <stdint.h>

uint16_t toBigEndian(uint16_t littleEndian) {
    // 通过字节交换来实现大端转换
    return (littleEndian >> 8) | (littleEndian << 8);
}

int main() {
    uint16_t littleEndian = 0x1234; // 小端模式下的数据
    uint16_t bigEndian = toBigEndian(littleEndian); // 转换为大端模式

    printf("Little Endian: 0x%04X\n", littleEndian);
    printf("Big Endian: 0x%04X\n", bigEndian);

    return 0;
}

解释:

  • (littleEndian >> 8) 将高字节移到低位。
  • (littleEndian << 8) 将低字节移到高位。
  • | 运算符用于将两个部分合并。

输出:

Little Endian: 0x1234
Big Endian: 0x3412

详细说明:

  • 输入数据 0x1234 在小端模式下表示为 0x34 0x12(低地址存储低字节)。
  • 将其转换为大端模式后,它变为 0x12 0x34(低地址存储高字节)。

这种转换方法适用于任何 16 位无符号整数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魂兮-龙游

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值