点分十进制形式的ip地址转化为十六进制数

#include "csapp.h"
/*本代码将点分十进制形式的ip地址转化为十六进制数并且输出*/

//返回一个字符串代表的整数
int str2int(char *str)
{
  //要注意变量的初始化
  int value=0;
  //字符串长度
  int length = strlen(str);
  //基数
  int base=1;
  while(--length!=0) {
    base*=10;
  }
  while(*str!=‘\0‘) {
    //用ascii码来计算
    int c = *str++;
    value = value + (c - 48) * base;
    base/=10;
  }
  return value;
}

//将十进制整数转化为16进制整数并以字符形式输出
char base_10_to_base_16(int value)
{
  if(value>=0&&value<=9)
    return (value+48);
  else if(value>=10&&value<=15)
    return (value-10+97);
}

//将16进制整数数组转化为字符串输出,调用上面的base_10_to_base_16函数
char* int_to_string_of_base_16(int value[],int bit)
{
  char* str = (char *)malloc(sizeof(char)*2*bit);
  char* copy_str = str;
  int i;
  for(i=0;i<bit;i++) {
    int bit_1 = value[i]/16;
    int bit_2 = value[i]%16;
    *str++ = base_10_to_base_16(bit_1);
    *str++ = base_10_to_base_16(bit_2);
  }
  return copy_str;
}

//主函数
void main(int argc,char* argv[])
{
  if(argc<2) {
    printf("input error!you should input like this:%s 172.20.4.163\n",argv[0]);
    exit(0);
  }
  //注意hex可能是4位或者是6位,动态变化
  char *hex=argv[1];
  
  //初始位数为1
  int bit_length = 1;
  while(*hex!=‘\0‘) {
    if(*hex++==‘.‘)
      bit_length++;
  }
  int value[bit_length];

  //计数器
  int count = 0;
  int index = 0;
  char *s = argv[1];
  char *old = argv[1];
  char ch;
  while(*old!=‘\0‘) {
    if(*old++==‘.‘) {
      s[count]=‘\0‘;
      value[index++] = str2int(s);
      s=old;
      count = 0;
    }
    else
      count++;
    if(*(old+1)==‘\0‘)
      value[index++] = str2int(s); 
  }
  //输出转换结果
  printf("0x%s\n",int_to_string_of_base_16(value,bit_length));
  exit(0);
}
时间: 2024-08-04 03:31:51

点分十进制形式的ip地址转化为十六进制数的相关文章

给你IP地址让你算出掩码(点分十进制),子网地址,广播地址。

给你IP地址让你算出掩码(点分十进制),子网地址,广播地址. 像要算出IP地址的掩码,子网地址,广播地址,先要记住几点.1:IP地址(A B C 三类)属于有类地址.A类地址掩码8位,B类地址16位,C类地址24位. 2:二进制 和十进制的转换记住(128,64,32,16,8,4,2,1). 3:要知道要知道A B C类地址的数位是多少.A类0-126/B类128-191/C类192-223.记住不要能错. 我们先从二进制的运算说起,举例:192的二进制是多少呢?其实就向我上面说的二进制 和十

IP地址转化为数字,charindex ,SUBSTRING

SET NOCOUNT ON; declare @I_PCity table ( IPStart nvarchar(255), Area nvarchar(255), CityID int, IPID int ) declare @IPStart nvarchar(255), @diana int, --存放点 @dianb int, @dianc int, @liea bigint, -- 存放列 @lieb bigint, @liec bigint, @lied bigint, @intlo

IP地址与子网掩码

一.IP地址 IP地址:Internet上每台主机都必须有一个唯一的地址以区别于其他主机,这个地址就是Internet地址,也称作IP地址: IPv4(第四版本的IP协议)是构成现今互联网技术的基石协议: IP地址的构成: IP地址由32位二进制构成,共约40亿个,由网络地址和主机地址构成:一个IP地址分为四段:a.b.c.d ,段与段之间用原点分开. IP地址表示方法:二进制形式和点分十进制形式: IP地址的分类:5类 A类地址,B类地址,C类地址,D类地址,E类地址 IP地址的分类是根据第一

[转]IP地址和MAV地址——区别和联系

[转载]http://wenda.tianya.cn/question/27f9476d1e86f6b6 一.IP地址  对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式.IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类.B类.C类等)的不同而不同.网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机.一个IP地址使

MAC地址和IP地址的关系

MAC地址和IP地址的关系 简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址. 一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式.IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类.B类.C类等)的不同而不同.网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机.一个IP地址使得将来自源地址

网络编程学习笔记-MAC地址和IP地址的关系

简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址. 一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式.IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类.B类.C类等)的不同而不同.网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机.一个IP地址使得将来自源地址的数据通过路由而传送到目的地

SDUST练习题-IP地址

题目内容: Description IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则.任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通.正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的.开放的计算机通信网络.因此,IP协议也可以叫做"因特网协议"

JAVA【long值与ip地址互转】 - ip的判别

阅读前提: 您需要了解什么是 ip地址 本章目的:实现ip地址和 long类型值的互转 一.应用范围 一般用在登录限制.查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP. 二.关键技术点 将IP地址转化成整数的方法如下: 1.通过String的indexOf方法找出IP字符串中的点"."的位置. 2.根据点的位置,使用String的substring方法把IP字符串分成4段. 3.使用Long的parseLong方法把子段转化成一个3位整数. 4.通过左移位操

MAC地址和IP地址的区别与联系(计算机网络篇)

最近参加一个考试,总是遇到mac地址的相关问题,于是在网上做一个知识整理,记得这些知识还是大二的时候学的,已经基本还回给黄沛杰老师了,不过很感谢他耐心又负责地教导我们计算机组成原理的知识,起码还是记得他曾经给我们带来很多美好的大学记忆. MAC地址和IP地址的区别与联系 简单地说:ip地址是服务商给你的,mac地址是你的网卡物理地址. 一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是