将整型ip转为点分十进制
通过将ip地址以整型16进制打出来,可以得到一些信息,比如192.168.251.10在内存中16进制为C0A8FB0A,它的Uint32是-1062667510;可以采用移位等方式将整型ip转换为点分十进制字串
具体实现程序如下:
/** main.cpp** Created on: 2017年8月21日* Author: */#include <iostream>
#include <stdio.h>
#include <sstream>
#include <cstring>
#include <cstdlib>#include "baseTypeDef.h"using namespace std;namespace Csl
{std::string itoa(Int32 num){std::stringstream strm;std::string numstr;strm << num;numstr = strm.str();return numstr;}/* 这里的ip是主机序,如果是网络序,需要转换为主机序 */char *num2Ip1(Uint32 clientIp){char* buf = new char[sizeof("aaa.bbb.ccc.ddd")];unsigned char* p = (unsigned char *)&clientIp;sprintf(buf, "%d.%d.%d.%d", p[3]&0xff,p[2]&0xff,p[1]&0xff,p[0]&0xff);return buf;}std::string num2Ip2(Uint32 clientIp){std::string ip;std::stringstream strm;for (int i = 3; i >= 0; i--){strm << itoa((clientIp>>8*i)&0xff);if (i != 0){strm << ".";}}ip = strm.str();return ip;}
};int main()
{Uint32 clientIp = -1062667510;cout << "clientIp:" << Csl::num2Ip1(clientIp) << endl;cout << "clientIp2:" << Csl::num2Ip2(clientIp) << endl;return 0;
}
还可以采用linux下的系统调用inet_ntop还得到ip字串
struct in_addr addr;addr.s_addr = htonl(3232260379);void *tmpPtr = NULL;tmpPtr = &addr;char buf[1024];inet_ntop (AF_INET, tmpPtr, buf, sizeof (buf));cout << buf << endl;
测试结果如下:
说明可行
将整型ip转为点分十进制相关推荐
- IP从整型地址转换为点分形式
题目描述: 通常我们在存储IPv4地址的时候不会直接使用字符串,例如192.168.1.1,我们不用"192.168.1.1"这个字符串来存储,而是将这个IP地址转换为一个无符号整 ...
- IP地址点分十进制与二进制整数之间的转换
error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WAR ...
- 使用 strtok 提取 ip (点分十进制)网段
char *strtok(char s[], const char *delim); 分解字符串为一组字符串.s 为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分 ...
- java长整型转换为整型_java ip地址转换为长整型
java ip地址转换为长整型 java ip地址转换为长整型: public class Util { /** * 字符串ip转换为long * @param 字符串ip * @return */ ...
- C 语言格式输出 %hd,%hu分别是 短整型 和 无符号的短整型。
C 语言格式输出 %hd,%hu分别是 短整型 和 无符号的短整型. %hd,%hu分别是 短整型 和 无符号的短整型. posted on 2011-08-22 20:29 雨亭 阅读( ...) ...
- IPv4/IPv6地址范围与网络地址/子网掩码的转换,点分十进制与数字掩码的转换
private static final int IPV4BYTES = 4; // IPv4字节数为4 private static final int BYTEBITS = 8; // 每个字节的 ...
- 网络编程 网络地址点分十进制和二进制之间的转换
网络编程 网络地址点分十进制和二进制之间的转换 点分十进制->二进制 点分十进制转二进制的函数有inet_addr,inet_aton,inet_network,inet_pton,它们都将输入 ...
- 整型数据类型java_Java 六种基本整型数据类型变量的取值范围
原创. *Java四种基本整型数据类型变量(长型long.整型int.短型short.和字节型byte),需要不同的存储空间(分别为8.4.2.1字节),表示不同的数据取值范围.(符号^表示幂指数) ...
- 信息学奥赛一本通 1022:整型与布尔型的转换 | OpenJudge NOI 1.2 09
[题目链接] ybt 1022:整型与布尔型的转换 OpenJudge NOI 1.2 09:整型与布尔型的转换 [题目考点] 1. bool类型(布尔类型) bool类型常量:true(真),fal ...
最新文章
- DirectX标准规定 DirectX和OpenGL的不同
- ubuntu之apache正向代理及反向代理(ProxyPass\ProxyPassReverse)
- http抓包实战 pdf_网络协议HTTP 协议(抓包实战和网络分层)
- 通用的N-Tier模型合理么?
- python计算速度_python中如何提高计算速度?
- Layui在表格中无法显示进度条(layui-progress)的值
- 【职场酸甜苦辣咸】+IT女汉子坚持的梦想和原则
- 算法: 最大正方形面积221. Maximal Square
- .NET C# Socket产品性能测试、性能对比报告(包含SuperSocket、HPSocket.Net、TouchSocket)
- Java转换坐标系,GPS(WGS84)、百度(BD-09)、高德(GCJ-02)互转,一文搞懂坐标系、坐标转换
- java md5加密解密_JAVA实现MD5加密解密
- AI综述专栏 | 多模态学习研究进展综述
- jupyter notebook更改默认浏览器
- windwos11 小爱音箱链接上但是没有声音
- mysql auto.cnf_MySQL之my.cnf配置
- JavaOJ 汉诺塔问题
- 打印英文字母阵列c语言,UG软件做英文字母的阵列自动递增,这个方法太好用了!...
- 什么叫32位计算机,32位是什么意思
- Android网络代理原理及实现
- 面向过程、基于对象、面向对象、分析
热门文章
- 基于ODX的工程诊断仪 — DDS
- pscad 如何产生一个阶跃信号_在PSCAD中实现故障起始角控制及自动遍历的方法与流程...
- 解剖vantweapp的dialog组件,论如何封装一个通用性高的组件。
- shell之常用小工具(sort、uniq、tr、cut)
- Axure 引入元件库
- 【单片机毕业设计】【mcuclub-jj-029】基于单片机的婴儿床的设计
- 【EXCEL】 python xls转csv
- 安装vue脚手架遇到的问题报错‘code EEXIST‘,ERR! path C:\Users\空你吉瓦\AppData\Roaming\npm\node_modules
- JPA 之 QueryDSL-JPA 使用指南
- 如何使用Zotero快速创建bibliography