Checking for Endianness

#include <stdbool.h>
#include <stdint.h>
/*
* Big Endian vs Little Endian
*
* Big Endian  - the most significant byte is stored at the lowest memory address
* Little Endian - the least significant byte is stored at the lowest memory address
* memory is byte-addressable
* Integer value: 0xA1B2C3D4
*
* Memory   Big       Little
* Address  Endian    Endian
* ======   ======    ======
* 0x100    A1        D4
* 0x101    B2        C3
* 0x102    C3        B2
* 0x103    D4        A1
*/

bool is_little_endian(){
    int val = 1; // any multi-byte integer works; 1 ensures only the LSB is 0x01
    // points to the lowest-addressed byte
    char* c = (char*)&val;
    return *c == 1;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容