博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大头小头
阅读量:4204 次
发布时间:2019-05-26

本文共 811 字,大约阅读时间需要 2 分钟。

如果将0x1234abcd写入到以0x0000开始的内存中,则结果为:
  big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。
typedef unsigned char BYTE;int main(int argc, char* argv[]){    unsigned int num, *p;    p = #    num = 0;    *(BYTE *)p = 0xff;    if(num == 0xff)        printf("The endian of cpu is little\n");    else /* num == 0xff000000 */        printf("The endian of cpu is big\n");    return 0;}
实现同样的功能,我们来看看Linux操作系统中相关的源代码是怎么做的:
static union {    char c[4];    unsigned long mylong;} endian_test = {'l', '?', '?', 'b'};#define ENDIANNESS ((char)endian_test.mylong)
Linux内核作者们仅仅用一个union变量和一个简单的宏定义就实现了一大段代码同样的功能!以上一段代码我们可以看到Linux源代码的精妙之处!
(如果ENDIANNESS='l',表示系统为little endian,为'b'表示big endian)

转载地址:http://vssli.baihongyu.com/

你可能感兴趣的文章
MySQL性能优化的最佳20+条经验
查看>>
SQL语言的组成部分 ddl dcl dml
查看>>
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>
mysql一: 索引优化
查看>>
测试人员,今天再不懂BDD就晚了!
查看>>
是QA还是AQ?
查看>>
害怕自动化(1)
查看>>
Script and Test Data
查看>>
在ITPub上发表文章《如何进行测试自动化的成本估算》
查看>>
深圳市软件质量提升工程系列活动——安全测试百人大课堂
查看>>
做培训讲师就像做一名导演
查看>>
深圳51testing笔架山一日游
查看>>
LoadRunner如何在脚本运行时修改log设置选项?
查看>>
QC数据库表结构
查看>>
自动化测试工具的3个关键部分
查看>>
测试工具厂商的编程语言什么时候“退休”?
查看>>