#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

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);

}

c语言ip地址转16进制,点分十进制形式的ip地址转化为十六进制数相关推荐

  1. c语言中定义一个十六进制的数,C语言如何定义一个16进制数

    例: int main(){ int a; scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",& ...

  2. c语言115写成16进制,C语言指针问题

    C语言指针问题 來源:互聯網  2009-04-01 16:01:29  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: int a=115,*p;p ...

  3. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

  4. c语言16进制数字母对应,写一个函数,输入一个十六进制数,输出相应的十进制数(附C程序 和 更加简单的实现方法)...

    写一个函数,输入一个十六进制数,输出相应的十进制数.基本思路是16进制数以字符串输入,然后经过转变为相应的10进制数,主要处理A~F六个字母对应的值,相应的程序如下: #include #includ ...

  5. C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~

    借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...

  6. c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...

    一个简单的问题:像这样的16进制数如何转换得到? 本帖最后由 alibaren 于 2014-11-25 01:15:15 编辑 下列3个整数(用16进制表示) 如何通过某种运算一次性得到右边的数: ...

  7. [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。

    最近在做一个流水线的接口,连接的是日立生化和雅培化学发光.流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息. 之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支 ...

  8. c语言中字符串转16进制或10进制

    直接上语句: str = "16" 1,字符串转16进制 int a = strtol(str,NULL,16); 2,字符串转10进制 int b = strtol(str,NU ...

  9. 华为机试 16进制转换成十进制

    题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. 输入描述: 输入一个十六进制的数值字符串.注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder ...

  10. oracle转换为16进制,Oracle的十进制和16进制转换函数

    Oracle的10进制和16进制转换函数 在数据库中,常常需要将10进制转16进制,又会需要将16进制转10进制.有两个使用PL/SQL开发的函数,可以方便使用. create or replace ...

最新文章

  1. php字符串替换多余逗号_PHP字符过滤函数去除字符串最后一个逗号(rtrim)
  2. [Linux]VI相关操作
  3. 中立安全·赋能产业,神策数据受邀出席 UCloud 用户大会
  4. 浅析几种常见算法(转载)
  5. mysql grant查看用户权限命令
  6. urllib.error.HTTPError: HTTP Error 403: Forbidden
  7. 描述符演练-02-逻辑疏理-类的装饰器
  8. SQLyog v12.09 (64 bit) 注册码
  9. 【总结整理】openlayer加载搜狗地图,qq地图,mapabc
  10. 一个事物两个方面的对比举例_写compare contrast essay如何对比两个事物/人物
  11. 用c语言输出英文字母表音标,26个英文字母表中文
  12. CMake中使用get_target_property判断Target是否存在
  13. 贪心算法-磁带最优存储问题
  14. angularjs全栈开发知乎_双剑合璧Laravel,AngularJS全栈开发知乎
  15. Angular Material 图标素材网址与使用
  16. 在冒险中打拼:教师到手机大亨的打拼路
  17. 『矩阵论笔记』线性判别分析(LDA)最全解读+python实战二分类代码+补充:矩阵求导可以参考
  18. 微服务架构从入门到精通(一)微服务介绍
  19. 除了PRD,你知道BRD、MRD吗
  20. 解决Surface Pro 系列 TF卡掉卡问题

热门文章

  1. python生成数字证书_makecert 制作数字证书
  2. 万年历api接口调用文档
  3. 项目管理--maven浅析《四》之私服(Nexus)
  4. 私服游戏怎么选择服务器性能和配置。
  5. 如何在Debian8.6 jessie上使用小度Wifi
  6. XMPP即时通讯协议使用(一)——Openfire安装
  7. lammps软件介绍与使用
  8. 网易云自动化爬虫方案,24小时爬取10万首音乐信息,30万条用户信息,100万个热评
  9. 【软件工程】实验七:建立功能模型--自行车租赁管理系统
  10. win10前置耳机插孔没声音_win10头戴式耳机麦克风没声音怎么办