c语言ip地址转16进制,点分十进制形式的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
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地址转化为十六进制数相关推荐
- c语言中定义一个十六进制的数,C语言如何定义一个16进制数
例: int main(){ int a; scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",& ...
- c语言115写成16进制,C语言指针问题
C语言指针问题 來源:互聯網 2009-04-01 16:01:29 評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: int a=115,*p;p ...
- c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...
- c语言16进制数字母对应,写一个函数,输入一个十六进制数,输出相应的十进制数(附C程序 和 更加简单的实现方法)...
写一个函数,输入一个十六进制数,输出相应的十进制数.基本思路是16进制数以字符串输入,然后经过转变为相应的10进制数,主要处理A~F六个字母对应的值,相应的程序如下: #include #includ ...
- C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~
借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...
- c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
一个简单的问题:像这样的16进制数如何转换得到? 本帖最后由 alibaren 于 2014-11-25 01:15:15 编辑 下列3个整数(用16进制表示) 如何通过某种运算一次性得到右边的数: ...
- [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
最近在做一个流水线的接口,连接的是日立生化和雅培化学发光.流水线软件提供商提供了基于HL7的通讯协议,其要求发发送完整的病人信息. 之前和迈瑞等一些国产仪器做LIS接口时,他们提供的通讯方案,也是只支 ...
- c语言中字符串转16进制或10进制
直接上语句: str = "16" 1,字符串转16进制 int a = strtol(str,NULL,16); 2,字符串转10进制 int b = strtol(str,NU ...
- 华为机试 16进制转换成十进制
题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. 输入描述: 输入一个十六进制的数值字符串.注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder ...
- oracle转换为16进制,Oracle的十进制和16进制转换函数
Oracle的10进制和16进制转换函数 在数据库中,常常需要将10进制转16进制,又会需要将16进制转10进制.有两个使用PL/SQL开发的函数,可以方便使用. create or replace ...
最新文章
- php字符串替换多余逗号_PHP字符过滤函数去除字符串最后一个逗号(rtrim)
- [Linux]VI相关操作
- 中立安全·赋能产业,神策数据受邀出席 UCloud 用户大会
- 浅析几种常见算法(转载)
- mysql grant查看用户权限命令
- urllib.error.HTTPError: HTTP Error 403: Forbidden
- 描述符演练-02-逻辑疏理-类的装饰器
- SQLyog v12.09 (64 bit) 注册码
- 【总结整理】openlayer加载搜狗地图,qq地图,mapabc
- 一个事物两个方面的对比举例_写compare contrast essay如何对比两个事物/人物
- 用c语言输出英文字母表音标,26个英文字母表中文
- CMake中使用get_target_property判断Target是否存在
- 贪心算法-磁带最优存储问题
- angularjs全栈开发知乎_双剑合璧Laravel,AngularJS全栈开发知乎
- Angular Material 图标素材网址与使用
- 在冒险中打拼:教师到手机大亨的打拼路
- 『矩阵论笔记』线性判别分析(LDA)最全解读+python实战二分类代码+补充:矩阵求导可以参考
- 微服务架构从入门到精通(一)微服务介绍
- 除了PRD,你知道BRD、MRD吗
- 解决Surface Pro 系列 TF卡掉卡问题