将ip地址转成二进制数据

小弟不才,谢了个 将ip地址转成二进制的代码。主要用了栈来存储,在输出二进制时做了转换,虽然实现了功能,个人感觉不是很理想,有些繁琐。毕竟是自己第一次写这个代码,贴上去,请大侠们指教!

#include "stack.h"
#include <string>
#include <iostream>
using namespace std;
int main()
{
int A[32] = {0};
int B[32] ={0};
stack st;
initstack(st);
cout<<"请输入一个IP地址,格式如:192.168.1.1"<<endl;
char ch[16];
cin>>ch;
/////////分割字符串
char *tokenPtr = strtok(ch, (const char*)".");
while (tokenPtr)
{
int j = atoi(tokenPtr);
for (int k=0; k<8; k++)
{
pushelem(st, j%2);
j = j/2;
}
tokenPtr = strtok(nullptr, (const char*)".");
}
int i = 0;
while (st.base != st.top)
{
popelem(st, A[i++]);
}

///////倒置数据
int jj = 24;
int k = 0;
for (; jj<32; jj++)
B[k++] = A[jj];
for (jj=16; jj<24; jj++)
B[k++] = A[jj];
for (jj=8; jj<16; jj++)
B[k++] = A[jj];
for (jj=0; jj<8; jj++)
B[k++] = A[jj];
for (int k= 0; k<32; k++)
{
if (k%8 ==0)
{
cout<<" ";
}
cout<<B[k];
}

return 1;
}

#include "stack.h"
#include <stdlib.h>

#define INITSIZE 100
#define INCREASE 20

bool initstack(stack&st)
{
st.base = new ElemType[INITSIZE];
if (st.base == nullptr)
{
return 0;
}
st.top = st.base;
st.size = INITSIZE;
return 1;
}
void pushelem(stack&st,ElemType elem)
{
if (st.top -st.base == st.size)
{
ElemType* pelem = new ElemType[INITSIZE +INCREASE];
if (pelem == nullptr)
exit(0);
st.base = pelem;
st.top = st.base +INITSIZE;
st.size += INITSIZE;
}
*st.top++ = elem;
}

bool popelem(stack& st, ElemType& elem)
{
if (st.top == st.base)
return 0;
elem = *--st.top;
return 1;
}

时间: 2024-10-09 15:01:31

将ip地址转成二进制数据的相关文章

将ip地址转成二进制数据,除基本输入输出不调用库函数实现

int inet_aton(const char *cp) { int dots = 0; int a[32]= {0}; register unsigned long acc = 0, addr = 0; do { register char cc = *cp; switch (cc) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': acc

IP地址转换成Long型数字的算法

在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型).能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的.在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快. 对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下: view plain   copy Long  =  * 256 * 256 * m + y 使用Java语言,则这样实现: view p

F5 cookie值与IP地址(二):将IP地址转换成F5 cookie值

简  介 在上一篇中,我们介绍了如何将cookie码转换成IP地址,这次我们将介绍如何将IP地址转换成cookie码.如何上一篇分析清楚了,本篇也很简单. 链接:http://showing.blog.51cto.com/11976328/1841564 转换步骤 下面,我们将以IP地址:192.168.1.1为例: 192.168.1.1->倒置顺序->1 1 168 192->分别转换为16进制->1 1 A8 C0->不够两位的补0->01 01 A8 C0-&g

ip地址转换成16进制long

<span style="font-size:18px;">public class IpUtil { /** * ip地址转换成16进制long * @param ipString * @return */ public static Long ipToLong(String ipString) { Long[] ip = new Long[4]; int pos1= ipString.indexOf("."); int pos2= ipString.

python 将IP地址转换成打包后的32位格式

python 2.7 #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter - 1 # This program requires Python 2.7 or any later version import socket from binascii import hexlify def convert_ip4_address(): for ip_addr in ['127.0.0.1', '192.168.

图片转化成二进制数据、等比缩放

C# 将二进制流转化成图片格式  MemoryStream ms = new MemoryStream(photo);   Bitmap bmpt = new Bitmap(ms);   //将二进制流转化成图片格式  SickPicture.Image = bmpt;   //SickPicture为pictureBox控件名称 C# 将二进制流转化成图片格式,并且图片可再次使用    Image image = Image.FromFile(PicturePath);  //直接打开会出现再

IP地址基础知识

IP地址基础知识 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 一 OSI/RM模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 二 TCP/IP模型 数据链路层(网络接口层):Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP 等 网络层协议(互联网

IP地址、子网掩码、网络号、主机号、网络地址、主机地址

对于192.168.0.0到192.168.0.255这个网络来说,以下说法中正确的是____. 正确答案: D   你的答案: D (正确) 网段内可用来作为主机IP的范围是:192.168.0.0到192.168.0.255 Network IP是192.168.0.255 Broadcast IP是192.168.0.0 网段内的主机可以通过网卡对网卡传递数据 192.168.0.1和192.168.0.2的主机需要使用Router传递数据包 是class B等级 添加笔记 求解答(4)

IP地址,子网掩码、默认网关,DNS服务器是什么意思?

IP地址,子网掩码.默认网关,DNS服务器是什么意思? (一)  问题解析 001.   问:  IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能打开网页,这是为什么呢> 答:  IP是32位二进制数据,通常以十进制表示,并以“.”分隔.IP地址是一种逻辑地地址,用来标识网络中一个个主机,IP有唯一性,即每台机器的IP在全世界是唯一的.