点分十进制与网络字节序之间的相互转换

点分十进制IP转换网络字节序 网络中表示的IP地址与主机表示不同,本程序通过转换来表示。 立即下载
[cpp]  view plain copy
  1. #include <sys/types.h>  
  2. #include <netinet/in.h>  
  3. #include <ctype.h>  
  4. #include <stdio.h>  
  5. #include <stdlib.h>  
  6. #include <arpa/inet.h>  
  7.   
  8. /* 
  9.  * Ascii internet address interpretation routine. 
  10.  * The value returned is in network order. 
  11.  */  
  12. unsigned int  
  13. __inet_aton(const char *cp)  
  14. {  
  15.     unsigned int val = 0;  
  16.     unsigned int tmp = 0;  
  17.     char c;  
  18.     int base = 10;  
  19.     int shift = 32;  
  20.   
  21.     c = *cp;  
  22.     for (;;) {//可以给出一个任意长度的字符串;  
  23.         tmp = 0;  
  24.         for (;;) {//获得'.'分割的每一个字符串的数值;  
  25.             if (isdigit(c)) {  
  26.                 tmp = (tmp * base) + (c - '0');  
  27.                 c = *++cp;  
  28.             } else break;  
  29.         }  
  30.   
  31.         shift -= 8;  
  32.         tmp <<= shift;  
  33.         val += tmp;   
  34.           
  35.         if (c == '.') {  
  36.             c = *++cp;  
  37.         } else  
  38.             break;  
  39.     }  
  40.   
  41.     /* 
  42.      * Check for trailing characters. 
  43.      */  
  44.     if (c != '\0' && (!isspace(c)))  
  45.         goto ret_0;  
  46.   
  47.     return (htonl (val));//返回网络字节序  
  48. ret_0:  
  49.     return (0);  
  50. }  
  51.   
  52. /* The interface of this function is completely stupid, it requires a 
  53.    static buffer.  We relax this a bit in that we allow one buffer for 
  54.    each thread.  */  
  55. static char buffer[18];//作为库函数,正式这个函数不能重入的原因;  
  56. char *  
  57. __inet_ntoa (unsigned int in)  
  58. {  
  59.   unsigned char *bytes = (unsigned char *) &in;  
  60.   snprintf (buffer, sizeof (buffer), "%d.%d.%d.%d",  
  61.           bytes[0], bytes[1], bytes[2], bytes[3]);//网络字节序是小端表示,第一个是byte[0];  
  62.   
  63.   return buffer;  
  64. }  
  65.   
  66. int main()  
  67. {  
  68.     printf("ip :%lu\n",__inet_aton("192.168.1.105 "));    
  69.     printf("str:%s\n",__inet_ntoa(__inet_aton("192.168.1.105")));  
  70.     return 0;     
  71. } 
windows11系统封装教程 1、 现在电脑品牌各式各样,小白对电脑软件的安装存在较大的难题,今天笔者针对以上的问题做如下教程:windows11系统封装教程方式为视频方式。 阅读详情

相关推荐

同花顺自动化交易避坑指南:pywinauto实战中验证码识别与界面弹窗处理

本文深入探讨同花顺自动化交易中的关键稳定性问题,重点解决验证码识别与弹窗处理两大难题。通过优化Tesseract OCR、整合打码平台API以及设计pywinauto弹窗监控体系,提供了一套完整的自动化交易解决方案,帮助交易者有效规避资金账户和持仓信息操作中的常见陷阱。

weixin_33734785的博客 488

网络字节序本地字节序点分十进制转换函数总结&&两种初始化socket并bind的步骤

看完这些转换可以去看初始化socket的步骤,会印象更加深刻一些。

m0_74795952的博客 1305

期货套利策略(二)

接上一篇期货套利策略,随着对期货套利策略的深入了解,我发现套利策略不是那么好做的。下面将会讲碰到的一些问题。 上一篇文章中没有考虑滑点的问题,这里我们把滑点问题考虑进去。这里先说一些天勤api的买入点,天琴的买入点是当前K线的收盘价。碰到数据传输问题,还有计算等各方面问题,实际情况是无法在当前K线的收盘价买入的。这里我们把这方面问题考虑进去,利用api.wait_update()调到下一个k线数据...

qq_31611005的博客 1713

IP地址点分十进制格式转换为网络字节序二进制以及八进制十六进制输出

如题,本篇文章是为了测试

jin的专栏 6483

360加固DEX解密与ELF修复技术解析

本文深入解析了360加固APK的逆向分析技术,重点探讨了其DEX解密与ELF文件修复的核心流程。通过动态调试与Frida脚本,详细拆解了壳的启动机制、反调试绕过、自实现Linker技术,并还原了基于RC4和自定义算法的多层DEX解密过程,为移动安全研究人员提供了实用的实战分析思路。

alice7model的博客 701

基于 YOLO + SAM 的自动图像标注实战

摘要: 本文提出一种基于YOLO检测和SAM分割的自动化数据标注流水线方案,通过YOLO定位目标并生成检测框,再以检测框为提示驱动SAM完成精细分割,最终输出YOLO格式的标注文件。该方案将人工标注升级为半自动流程,显著提升标注效率,尤其适用于多类别、大规模图像的实例级标注需求。代码模块化设计支持模型灵活替换,并集成异常处理与进度可视化功能。虽依赖YOLO检测质量且对小目标存在局限,但作为工程落地方案,可有效降低私有数据集构建成本,适用于工业检测、遥感等场景的冷启动标注。

qq_64366203的博客 1148

地址转换函数(点分十进制与网络字节序的二进制)

地址转换函数第一组函数第二组函数 1、inet_aton \ inet_addr \ inet_ntoa 在点分十进制与网络字节序的二进制之间转换IPv4地址。 2、inet_pton \ inet_ntop 对于IPv4和IPv6地址都适用。 第一组函数 n代表网络字节序的二进制数串 a代表点分十进制字符串 #include <arpa/inet.h> int inet_aton(const char *strptr, struct in_addr *addrptr); //将strptr所

weixin_43224412的博客 880

benders分解算法 逻辑思路整理(加星)

一般我们经常可以看到的是经典的benders,此处我也结合经典的benders梳理下思路。

sinat_41348401的博客 7988

C模拟实现点分十进制IP转换

声明:本文在32位机器上测试无误 点分十进制 点分十进制是计算机网络中的一个名词,是一种网络地址的表示方法,每一组数字都是在0~255之间,每个组之间都是通过"."来进行分割的,本文主要是讲32位的转化,也就是IPv4地址的表示方法。(Ipv6同理可得) 实现原理 在计算机网络中,主要是将一个无符号的长整型转化为点分十进制的形式,比较haoli

double_happiness的博客 3436

扫地机器人解决方案:工作原理与硬件构成

房间里柜子,鞋子,床,座椅,人都在什么地方?3、数字信号处理器。这主要是为控制芯片进行路径规划后,下发指令给执行的电机,包括舵轮(扫地机人前进,转向的轮子),扫地刷的电机,吸尘器的电机,让这些电机工作。扫地机器人的大脑主要用来规划路径,避障,以及人机交互,例如:人类设定打扫范围,以及语音指导扫地机器人进行打扫,都需要处理器进行处理后,将指令下发到执行机构。小脑属于跟执行层最近的控制区域,例如我们上面说的,后面两个处理器:数字信号处理器和微控制器都是对执行层(电机),进行控制和回馈外部信息的处理器。

迷途 7404

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 364

网络编程作业1

【代码】网络编程作业1。

weixin_57191835的博客 245

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4294

字节序转换&IP地址转换接口

1.字节序转换接口: 2.字符串点分十进制IP地址转换为网络字节序整数IP地址接口: 3.将网络IP地址转换为字符串点分十进制IP地址: 常用命令

S5242的博客 2044

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

网络字节序

大端模式:从高字节开始存储;小端模式:从低字节开始存储;      网络协议必须协调一致字节序(网络字节序),同时也要考虑到不同主机的实际情况,所以存在二者之间的转换。      常见的函数有 htons,htonl,ntohs,ntohl。 查看主机字节序(UNPv1 P64): #include #include int main(int argc, char **argv)

博观约取 1132

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大端存储小端存储

大端小端转换问题 终端中获得的点分十进制形式的ip地址,ip地址在网络中以大端格式传输,本地存储的是以小端格式。 `ping www.baidu.com`获得的ip为`58.217.200.15` 该地址的十六进制(本地小端存储)为`3ad9c80f`,在网络中传输地址为`0fc8d93a`. 1.将点分十进制地址转换为网络地址 int ip_aton(char* ip_a

mykelia的专栏 733

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux 网络编程——网络字节序、地址转换

一、字节序的概念 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。 小端格式(Little-Endian):将低位字节数据存储在低地址。 大端格式(Big-Endian):将高位字节数据存储在低地址。 举个简单的例子,对于整形 0x12345678,它在大端格式和

alpha_love的博客 286

linux中点分十进制数串到32位网罗字节序二进制的转换

   将点分十进制的IP地址转换为网络自节序,或相反的转换在网络编程中会经常使用到.现在收集了一些函数.  1.      #include        int inet_aton(const char* strptr, struct in_addr* addrptr);                                   返回:1 串有效,0 串有错     将strptr

2400

IP地址在“点分十进制”和“二进制整数”之间转换

#include #include #include #include #include #include int main() { char ipdotdec[20]; struct in_addr s; printf("please input ip address:\n"); scanf("%s",ipdotdec); inet_pton(

cyfhan的专栏 1073

c++网络编程中的inet_ntoa()函数与inet_aton()函数介绍

inet_aton(const char * IP)就是返回IP对应的网络字节序表示的无符号整数。inet_ntoa(in_addr n)就是网络字节序n转化为点分十进制的IP。将一个字符串表示的点分十进制IP地址IP转换为网络字节序存储在addr中,并且返回该网络字节序表示的无符号整数。将一个网络字节序的IP地址(也就是结构体in_addr类型变量)转化为点分十进制的IP地址(字符串)。成功:返回点分十进制的IP地址对应的网络字节序表示的无符号整数。in_addr是一个按网络顺序存储的IP地址。...

sebeefe的博客 2888

IP地址转换函数

人们习惯用可读性好的字符串来表示IP地址,比如用点分十进制字符串表示IPv4地址,十六进制表示IPv6地址。 下面3个函数用于点分十进制字符串表示的IPv4地址及用网络字节序整数表示的IPv4地址之间的转换:#include <arpa/inet.h>in_addr_t inet_addr(const char* strptr); int inet_aton(const char* cp, str

未来之歌 2268

地址族与数据序列

struct sockaddr_in { sa_family_t sin_family; //地址族 uint16_t sin_port; //16位端口号 struct in_addr sin_addr;//32位IP地址 char zero[8]; //不使用 } struct in_addr { in_addr_...

weixin_42528089的博客 276

2024/03/13(网络编程·1)

三、IP地址点分十进制转换为4字节无符号整数的无符号网络字节序 函数 inet_addr。4字节无符号整数的无符号网络字节序转换为点分十进制IP地址 函数 inet_ntoa。二、主机字节序转换为网络字节序(大端存储)函数 htonl htons。网络字节序转换为主机字节序 函数 ntohl ntohs。

qq_55245263的博客 528

linux网络编程相关函数(一)

将点分十进制数------>网络字节序(即小端模式) inet_pton( int af,    const char *src,         void *dst )                      ^               ^                             ^                       |

u010298522的博客 298

ip地址转换数字函数 iton_IP地址转换函数

这些天一直在看《UNP》,觉得有必要对一些东西做一下总结(其实只是抄一抄书),加深一下印象。IP地址转换函数有两组,它们可以在字符串和网络字节序的二进制值之间转换IP地址适用于IPv4地址的函数1 #include 23 /*Convert Internet host address from numbers-and-dots notation in CP4 into binary data an...

weixin_33362096的博客 405

inet_addr函数、inet_aton函数、inet_network函数

在网络编程中经常要用到主机字节序与网络字节序之间的来回转化。下面三个函数在网络编程中经常使用: (1)inet_addr函数 原型:in_addr_t inet_addr(const char *StrIP); 功能:将点分十进制IP转化为网络字节序(二进制位的大端存储)。 返回值: 如果失败:返回INADDR_NONE; 如果成功:返回IP对应的网络字节序的数; (2) i

bian_qing_quan11的博客 4149
上一篇: P2P中的NAT穿越方案简介
下一篇: ./configure,make,make install的作用
pingd
博客等级 码龄15年 60粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值