UNIX网络编程之字节序及转换

CSAPP---大小端字节序判断方法 之前在看《UNIX网络编程》这本书时有提到一种方法,利用union的性质,代码如下 #include<stdio.h> int main() { union { short value; char union_bytes[sizeof(short)]; }test; test.value=0x0102; //... 阅读详情
1. 对字节序的理解
endian指内存地址的低地址端,即内存地址增长的起始端。
little-endian: little指数据的低位字节,指低位字节存放在内存的低地址端,相应的高位字节存放在内存的高地址端;
big-endian: big指数据的高位字节,big-endian指高位字节存放在内存的低地址端,相应的低位字节存放在内存的高地址端。
网络字节序采用的是big_endian的字节序,符合人类的从左向右读数的习惯,即内存地址从小到大增长,读数也是从左向右读取。
需要转换的数据只限于对于多字节的整数,浮点数和字符串有一套独立的数据编码,不需要转换。
2. 主机字节序与网络字节序的互换函数(只有多字节整型数据需转换)
头文件<netinet/ih.h>
uint16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);
uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvalue);

3. 根据大小端的定义写出测试一台机器是大小端的简单方法

#include<stdio.h>
#include<netinet/in.h>
int main(int argc,char** argv)
{
  short num = 0x1234;

  unsigned char* ptr = (unsigned char*)(&num);

   printf("[0]: 0x%X addr:%u\n", pc[0], &pc[0]);     

   printf("[1]: 0x%X addr:%u\n", pc[1], &pc[1]);

  if((ptr[0] < ptr[1]) && (&ptr[0] < &ptr[1]))
  {
       printf("big endian\n");
  } 
  else
  {
       printf("little endian\n")
  }
  exit(0);
}
记录Nvidia AGX Orin的配置日常(二)设置上电自动开机和远程桌面 因为要拿AGX作为机器人的主控板,所以需要给他设置一下通电后无需按电源键就自动开机,然后再配置一下远程桌面。 阅读详情

相关推荐

晶振匹配电容容值计算方法

在使用晶振时,应仔细参考晶振规格书,以确保正确选择匹配电容,从而获得稳定和精准的时钟源。

aidi1111的博客 4654

网络编程(字节序)

字节序的概念、如何用共用体判断大小端、本地字节序与网络字节序、字节序转换函数【主机字节序、网络字节序】、结构体对齐、类型长度、IP转换【点分十进制、网络字节序】的概念及代码实现

m0_68542867的博客 387

保姆级教程:在S32DS 3.4上安装S32K3xx RTD 4.4驱动包(附常见安装失败排查)

本文提供在S32DS 3.4上安装S32K3xx RTD 4.4驱动包的详细教程,涵盖环境准备、分步安装指南及常见问题排查。特别针对NXP S32K3系列MCU开发者,解决网络问题、路径配置等安装难点,并分享进阶配置技巧和最佳实践,助力高效开发。

weixin_42696271的博客 289

网络编程 day01 (linux ) 网络字节序 与 主机字节序的转化函数 ,与相关的知识 。

htonl( );主机字节序数值转换为 网络字节序数值 ntohl();网络字节序数字 转化为 主机字节序数字 inet_aton() 将strptr所指的字符串转换成32位的网络字节序二进制值的数字 inet_addr() 函数 主机字节序的字符串 转换为 网络字节序的数值 inet_ntoa 将32位网络字节序二进制地址 转换成点分十进制的字符串。 inet_pton() 函数 主机字节序的字符串 转换为 网络字节序的数值 inet_ntop() 函数 网络字节序的数值 转换为......

she666666的博客 1197

手把手教你用闲置安卓手机搭建个人收款系统(蓝鲸支付私有化部署实战)

本文详细介绍了如何利用闲置安卓手机搭建个人收款系统,实现私有化支付部署。通过开源技术栈和容器化方案,零成本构建安全、高效的支付网关,解决传统支付平台的数据安全和资金风险问题。特别适合个人开发者和小微企业主,无需复杂审批,资金实时到账,显著降低运营成本。

weixin_30363285的博客 382

【GameFramework框架】二、GameFramework框架介绍

Game Framework框架是由E大(Ellan Jiang)开源的一款基于Unity的通用游戏框架。Game Framework框架提供了游戏开发中常用的框架基础模块,将基础模型进行了封装,在资源管理和资源更新方面比较完善,可以大大加大开发进程,加快开发速度,并且还在在此此处上保证产品质量。实在是代码开发、框架学习、编程进阶、居家旅行哦不对,是提升自己的最佳实践。Game Framework框架。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 5851

字节序(学习笔记)

什么是字节序,为什么要学习字节序??我们学习了linux网络编程,我要与你通信,是不是需要把语言规定好。字节序有两种格式,比如小端格式是说英语,大端格式是说汉语。我的电脑是大端格式(说听都是用汉语),你的电脑是小端格式(说听都是用英语)。我发中文给你,你能听的懂??

weixin_47783699的博客 524

RTK_ROS_导航(4):接入move_base

现在我们要将之前的数据接入到Move_base中,使得机器人能够根据Map上的终点进行导航,并且实现避障效果如下图。

旋风小短腿 1947

字节序转换详解

在跨平台和网络编程中我们经常会提到网络字节序和主机字节序,如果没有正确对两者进行转换,从而导致两方产生了不同的解释,就会出现意想不到的bug。 目录 0x01 概念 0x02 分类 0x03 两种字节序之间的区别 0x01 概念 字节序,就是大于一个字节类型的数据在内存中的存放顺序。 注:网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数...

无心的博客 5087

Cadence PCB仿真使用Allegro PCB SI S参数配置方法图文教程

S参数即S-Parameter是指散射参数,描述信号在传输线中的正反向传输和正反向反射的情况。本文讲述在使用Allegro PCB SI进行信号完整性仿真前,S参数的配置方法。

fydar的博客 2177

告别标注地狱!YOLO+CLIP多模态零样本检测全实战:图文联合推理,想检测什么直接输文字,不用训模型

这套方案我给朋友的超市用了快3个月,运行极其稳定,临期商品的检测准确率能到96%,后续加了“货架空货检测”“通道杂物堆积检测”,都是改一行文本就搞定,完全不用重新开发,朋友说省了十几万的定制开发费用。很多做计算机视觉的朋友,总觉得目标检测必须标数据、训模型,其实不是的。现在多模态大模型的能力已经足够强,把YOLO的定位能力和CLIP的图文泛化能力结合起来,就能用极低的成本,搞定绝大多数定制化检测需求。对于我们开发者来说,技术的价值从来不是炫技,而是用最简单的方案,解决最实际的问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 516

UNIX网络编程——字节序转换函数

<br />网络字节序与主机字节序之间的转换<br />#include <netinet/in.h> uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue);<br /> 返回网络字节序<br /><br />uint16_t ntohs(uint16_t net16bitvalue); uint32_t ntohl(uint32_t net32bitvalue);<br /> 返回主机字节

Gnou的笔记 737

YOLO26 网络结构逐模块解析:Backbone/Neck/Head

本文解析了YOLO26目标检测网络的架构设计,重点介绍其在Backbone、Neck和Head三个核心组件的创新优化。Backbone采用改进的CSP模块与轻量级注意力机制,提升特征提取效率;Neck使用改进的BiFPN结构实现高效多尺度特征融合;Head采用完全解耦设计简化回归流程。文章详细分析了各模块的技术演进、实现细节和设计思想,通过流程图和代码示例展示了YOLO26的整体架构和关键组件实现。该研究对模型优化、定制开发和硬件部署具有重要指导意义。

一键难忘的博客 1248

UNIX网络编程——socket概述和字节序、地址转换函数

一、什么是socketsocket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6,以及以后要讲的UNIX Domain Socket。然而,各种网络协议的地址格式并不相同,如下图所示:IPv4和IPv6的地址格式定义在netine

ctthuangcheng 2405

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Unix网络编程卷一: 主机字节序和网络字节序互相转换

htons:主机到网络 16位无符号整数 htonl:主机到网络 32位无符号整数 ntohs:网络到主机 16位无符号整数 ntohl:网络到主机 32位无符号整数 h: host n: network s: short l: long(此处只是32位)

chuanyu的专栏 489

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

unix 网络编程 第三章

<br /><br />包裹函数 就是对有错误返回值的函数的封装。在unix网络编程中用大写表示。<br /> <br />err_sys  必须要errno 的值才能输出错误?<br /> <br />线程函数遇到错误的时候 不设置errno的值,而是把error的值作为函数的返回值。<br /> <br />必须检查某个确定的错误,并处理它,而不是终止进程运行。<br /> <br />Unix errno 值 : 每当一个unxi函数中发生错误的时候,全局变量将被设置成一个指示消息类型的正数,函数本身

jphaoren的专栏 879

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IP地址转换函数

在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换。当然也包含主机字节序与网络字节序的转换结构体熟悉// ip地址的网络字节序 };上述结构体为 struct sockaddr_in 中的参数 3 struct sockaddr_in {// 地址簇 in_port_t sin_port;// 端口的网络字节序 struct in_addr sin_addr;概念熟悉。

weixin_42271802的博客 464

【UNIX网络编程(一)】套接字地址结构、网络字节序和地址转换函数

引言:套接字地址结构在网络编程的每个实现中都要用到,因此掌握套接字地址结构是以后编写网络程序的前提,地址结构可以在两个方向上传递:从进程到内核和从内核到进程。地址转换函数在地址的文本表达和他们存放在套接字地址结构中的二进制值之间进行转换。 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。不同协议都有自己的套接字地址结构。通用的套接字地址结构是sockaddr。IPv4套接字地

李冰-冰斌 1931

《UNIX网络编程》阅读笔记:套接字地址结构及基本概念

简介 套接字地址结构可以在两个方向上传递:从进程到内核和从内核到进程。 地址转换函数在地址的文本表达和它们存放在套接字地址结构中的二进制值之间进行转换。 多数现存的IPv4代码使用inet_addr和inet_ntoa函数,不过两个新函数inet_pton和inet_ntop同时适用于IPv4和IPv6两种代码。 这些地址转换函数与所转换的地址类型协议相关,要考虑是IPv4地址还是IPv6地址。这里使用一组名字以sock_开头的函数,它们以协议无关方式使用套接字地址结构。 套接字地址结构...

baidu_41388533的博客 1447

Unix网络编程学习笔记

unix网络编程,C语言,多线程,多进程,epoll,select

weixin_45045804的博客 2631

网络编程-基本函数

字节排序函数 #include <netinet/in.h> //返回网络字节序的值 uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); //返回主机字节序的值 uint16_t ntohs(uint16_t net16bitvalue); uint32_t nt...

zzu.zzysleep 278

UNIX网络编程---套接字编程简介(三)

UNIX网络编程---套接字编程简介 一、概述 从这里开始正式开始网络编程之旅,所有的函数都是基本的库函数。这些都是网络编程的基础。Come  on!!!! 二、套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议簇都定义它自己的套接字地址结构。这些机构的名字均以sockaddr_开头,并以对应每个协议簇的唯一后缀结尾。 1)  Ipv4套接字地址结构

鱼思故渊的专栏 2312

《UNIX网络编程卷1:套接字联网API》第3章 套接字编程简介

网络通信的基石套接字地址结构是网络编程的核心数据结构,定义了通信实体的网络标识与端口信息。不同协议族(如IPv4、IPv6、Unix域)拥有独立的地址结构,但均通过通用结构实现类型统一。

SEU123WW的博客 892
上一篇: UNIX网络编程之几种套接字地址结构说明
下一篇: UNIX网络编程之常用函数
ComputerInBook
博客等级 码龄19年 1168粉丝 464原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值