首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C中如何将big endian转换为little endian [不使用提供的func] ?

在C中如何将big endian转换为little endian [不使用提供的func] ?
EN

Stack Overflow用户
提问于 2018-02-28 00:46:50
回答 2查看 0关注 0票数 0

我需要编写一个函数将C中的大端转换为小端。我不能使用任何库函数。

EN

回答 2

Stack Overflow用户

发布于 2018-02-28 08:47:08

假设你需要的是一个简单的字节交换,

无符号16位转换:

代码语言:javascript
复制
swapped = (num>>8) | (num<<8);

无符号32位转换:

代码语言:javascript
复制
swapped = ((num>>24)&0xff) | // move byte 3 to byte 0
                    ((num<<8)&0xff0000) | // move byte 1 to byte 2
                    ((num>>8)&0xff00) | // move byte 2 to byte 1
                    ((num<<24)&0xff000000); // byte 0 to byte 3
票数 0
EN

Stack Overflow用户

发布于 2018-02-28 09:55:48

通过包含

代码语言:javascript
复制
#include <byteswap.h>

可以获得机器相关字节交换功能的优化版本。然后,可以轻松使用以下函数:

代码语言:javascript
复制
__bswap_32 (uint32_t input)

要么

代码语言:javascript
复制
__bswap_16 (uint16_t input)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档