顶级C程序员之路
C语言与CPP编程
共 12689字,需浏览 26分钟
· 2021-05-25
内存地址 big-endian little-endian
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
为了进行转换 bsd socket提供了转换的函数 有下面四个:
/* The host byte order is the same as network byte order,
so these functions are all just identity. */
# define ntohl(x) (x)
# define ntohs(x) (x)
# define htonl(x) (x)
# define htons(x) (x)
# else
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define ntohl(x) __bswap_32 (x)
# define ntohs(x) __bswap_16 (x)
# define htonl(x) __bswap_32 (x)
# define htons(x) __bswap_16 (x)
# endif
# endif
htons 把unsigned short类型从主机序转换到网络序
htonl 把unsigned long类型从主机序转换到网络序
ntohs 把unsigned short类型从网络序转换到主机序
ntohl 把unsigned long类型从网络序转换到主机序
在使用little endian的系统中这些函数会把字节序进行转换, 在使用big endian类型的系统中这些函数会定义成空,什么都不做。
}
为什么不统一字节序?
不同处理器之间采用的字节序可能不同。
有些处理器的字节序是确定的,有些处理器的字节序是可配置的。
网络序一般统一为大端序。
数据从本地传输到网络,需要转换为网络序,接收到的网络数据需要转换为本地序后使用。
C提供了一组接口用于整型数据在本地序和网络序之间的转换。
多字节数据对象才需要转字节序,例如int,short等,而char不需要。
由于处理器是按照IEEE标准处理float和double的,因此也不需要转字节序。
由于Java虚拟机的存在,Java不需要考虑大小端的问题。
为什么要字节对齐
枚举始终占用4字节的空间。
char dda;
double dda1;
int type
char dda; A(1) = 1
double dda1; A(2) = 2
int type ; A(3) = 2
};
char a[8];
};
struct s2{
double d;
};
struct s3{
s1 s;
char a;
};
struct s4{
s2 s;
char a;
};
默认指定对齐值n = 8;
结构体成员合理安排位置,节省空间,提高性能
跨平台数据结构可考虑1字节对齐,节省空间,解析安全,影响访问效率
跨平台数据结构进行结构优化(对齐填充),提高访问效率,解析风险,不节省空间
本地数据采用chace对齐,提高访问效率
32位与64位默认对齐数不一样
高通芯片平台的memcpy函数:
评论
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
知乎高问:程序员有必要知道为什么做某个功能吗?
将Python客栈设为“星标⭐”第一时间收到最新资讯前言知乎上有一个提问:程序员有必要知道为什么做某个功能吗?↓↓↓今天,我们就这个话题一起来做个讨论。不知道程序员的你,在接到产品经理提的一个需求后,是习惯马上动手开始撸代码呢?还是会先暂停一下,认真思考一会如下一些问题,比如这个需求产生的背景是什么
Python客栈
0
“渣女”怎样抵抗收入暴跌,去杭州找大厂程序员“接盘”
一位好友给我分享了一张图片,看过之后,我直呼毁三观。不知是哪位大厂员工蒙在鼓里多年,被“渣女”耍的团团转。这也难怪外面传“要嫁就嫁程序员,钱多话少死得早。”敢情成为了某些“心机女”的接盘侠。我不由得想起了曾经轰动一时的“程序员苏享茂事件”,被前妻翟欣欣索要千万跳楼自杀。我在网上详细查了这个案件资料。
Python涨薪研究所
0
PyPy为什么能让Python比C还快?一文了解内在机制
我的小册:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。来源:机器之心「如果想让代码运行得更快,您应该使用 PyPy。」—— Python 之父 Guido van Rossum对于研究人员来说,迅速把想法代码化并查看其是否行得通至关重要。Pyth
菜鸟学Python
0
坚持打造全球顶级的专业性行业盛会,鲁伟鼎、肖风充分肯定香港Web3嘉年华成绩
4月20日,中国万向控股2024年一季度述职会圆满举办。万向集团董事长兼CEO、中国万向控股董事长鲁伟鼎,中国万向控股副董事长、万向区块链董事长、HashKey Group董事长兼CEO肖风在会上听取了万向区块链总经理陈斌对2024年香港Web3嘉年华的活动总结报告,高度肯定了Web3嘉年华取得的成
万向区块链
1
某程序员吐槽:公司最近招了一批35左右的,这帮人习惯天天卷到八点多,导致现在我们也要八点才下班
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁某位程序员的吐槽引发了广泛的思考和共鸣。他抱怨公司
源码共读
0
AI大模型之路 第三篇:从零实现词嵌入模型,加深理解!
你好,我是郭震今天我们研究「AI大模型第三篇」:词维度预测,很多读者听过词嵌入,这篇文章解答下面问题:词嵌入是什么意思?怎么做到的?原理是什么?从零实现一个专属你数据集的词嵌入我们完整从零走一遍,根基的东西要理解透,这样才能发明出更好的东西。1 skip-gram模型Skip-gram模型是一种广泛
Python与算法社区
11
程序员因Bug被要求归还4万多年终奖,网友:不还!
往期热门文章:1、手动部署jar包,太low!动态上传热部署真爽!2、一套万能通用的异步处理方案3、微服务全做错了!谷歌提出新方法,成本直接降9倍!4、IntelliJ IDEA 2024 首个大版本发布,好用到爆!5、Web 后端的一生之敌:分页器责编 | 梦依丹出品 | 程序人生(ID:code
Java后端技术
0