/*题目4:(简答题:10.0分)
实现函数将点分十进制表示的字符串转换为 unsigned int 整型数值
unsigned int my_ResDotDec(const char *strip);
参数说明:strip 点分十进制表示的字符串;
示例: strip =“128.11.3.31” ; 返回值: 2148205343;
strip =“128.399.2.12” ; 返回值为 UINT_MAX

#include <iostream>
#include <ctype.h>
#include <limits.h>
#include <stack>using namespace std;//处理单个atoi
int my_atoi_single(const char p)
{return p - '0';
}//atoi的子函数,将进制,字符,符号传递进来
unsigned int my_atoi_Son(const char *p,int system)
{stack<char> sta;unsigned int sum = 0;unsigned int tmp = 0;while(isdigit(*p)){sta.push(*p);p++;}int n = sta.size();for(int i = 0; i < n;++i){tmp = my_atoi_single(sta.top());sta.pop();for(int j = 0;j < i;++j){tmp = tmp * system;}sum += tmp;}return sum;
}unsigned int  my_atoi(const char *str)
{unsigned int integer = 0;int system = 10;const char * p = str;if(!isdigit(*p)){throw exception("输入的字符串,无法进行atoi!");}integer = my_atoi_Son(p,system);return integer;
}void DDN_to_UIN_Son(char *str,char *des,int i,int n)
{char * p = des;char * q = str;p = p + (i * 8) + 8 - n;while(n--){*p++ = *q++;}
}//二进制字符串转成无符号整型
unsigned int  BINChar_to_UIN(const char *buffers)
{stack<char> sta;unsigned int sum = 0;unsigned int tmp = 0;const char * p = buffers;int i ,j;for(i = 0;i < 32;++i){sta.push(*p);++p;}for(i = 0; i < 32;++i){if(sta.top() == '0'){tmp = 0;}else{tmp = 1;}sta.pop();for(j = 0;j < i;++j){tmp = tmp * 2;}sum += tmp;}return sum;
}//10进制数转2进制,并保存在bool类型数组中
void DEC_to_BIN(unsigned int value, bool *buffer,int i)
{bool * p = buffer;bool itmp = 0;int n = 0;stack<bool> sta;while(value){itmp = value%2;value = value/2;sta.push(itmp);}n = sta.size();p = p + (i+1) * 8 - n;while(!sta.empty()){*p = sta.top();sta.pop();++p;}
}//二进制数转成无符号整型
unsigned int  BIN_to_UIN(bool *p)
{stack<bool> sta;unsigned int sum = 0;unsigned int tmp = 0;int i ,j;for(i = 0;i < 32;++i){sta.push(*p);++p;}for(i = 0; i < 32;++i){tmp = sta.top();sta.pop();for(j = 0;j < i;++j){tmp = tmp * 2;}sum += tmp;}return sum;
}//点分十进制转为unsigned int 整型数值记法
unsigned int  DDN_to_UIN(const char *IP_address)
{const char *p = IP_address;bool  buffers[32] = {0} ;char  buff[3] = {0};unsigned  int s = 0;long long tmp = 0;for(int i = 0;i < 4;++i){memset(buff,'*',3);for(int j = 0;j < 3;++j){buff[j] = *p;++p;if(*p == '.' || *p == '\0'){++p;break;}}tmp = my_atoi(buff);if(tmp > 255){return UINT_MAX;}DEC_to_BIN(tmp,buffers,i);}s = BIN_to_UIN(buffers);return s;
}int main()
{   printf("%u\n", DDN_to_UIN("128.399.2.12"));printf("%u\n",UINT_MAX);
}

点分十进制表示的字符串转换为 unsigned int 整型数值相关推荐

  1. php无符号整数转有符号整数,PHP中把有符号整型转换为无符号整型方法_PHP教程...

    PHP中把有符号整型转换为无符号整型方法 这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与I ...

  2. 26.【C语言】字符串转无符号整型unsignedint、字符串转有符号整型int、无符号整型unsignedint转字符串、有符号整型转字符串(5_task)

    算法思想: 1. 字符串转无符号整型unsignedint 初始化一个字符串str:num用于存放当前转换的整型数,初始化为0.对字符串str中的每个字符进行判断,一旦扫描到当前字符在数字字符的范围之 ...

  3. int整型转字符串,字符串转整型valueof,

    int整型转字符串(可以直接+号拼接整型和字符串,也可用调用包装类Integer中的parseInt方法将字符串转成整型,且第二种parseInt用的比较多) //将数值型字符串转为int整型 Str ...

  4. php 有符号整数,PHP中把有符号整型转换为无符号整型方法

    这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过214748 ...

  5. c++语言转换为字符串函数,C++中整型转换为字符串类型

    本文主要介绍C++语言中,整型转换为字符串类型的方法. 1 使用to_string函数 在c++11标准中,我们可以使用to_string函数,将整型转换为字符串类型. 1.1 to_string函数 ...

  6. 3字节转换为有符号整型C语言,3.C语言整型数据

    # 3.C语言整型数据 整型量包括整型常量.整型变量. ## 整型常量的表示方法 整型常量就是整常数.在C语言中,使用的整常数有八进制.十六进制和十进制三种. 1) 十进制整常数 十进制整常数没有前缀 ...

  7. C语言无符号整型转换字符串,字符串转换无符号整型

    char* UInt32toStr(unsigned int n) {     char buf[10] = "";   static char str[10]="&qu ...

  8. java 16进制转换十进制,Double、Int整型

    import org.apache.commons.lang3.StringUtils;import java.io.UnsupportedEncodingException; import java ...

  9. 列表中的字符串成员 转化为 整型成员 。如:将[‘2‘, ‘1‘] 转化为:[2, 1]、map()返回的是一个可迭代对象内存地址、join(可迭代对象),要注意:可迭代对象中的成员必须是字符串类型

    注意: 1.map()返回的是一个可迭代对象的内存地址,如果要看它具体的值,有两种方式: 法1:在map()前面,加list( ).tuple( ).set( ),将它强制转化为列表.元组.集合类型. ...

  10. mysql字符串等于失效_MySql整型索引和字符串索引失效或隐式转换问题

    问题概述 写代码的时候,有一段sql,表示该sql存在隐式转换,不走索引. 经过测试排查后,发现是类型varchar的字段, 我使用条件传入了数值型的值. 问题重现 首先我们先创建一张用户表test_ ...

最新文章

  1. tensorboard图上存在直线_高中数学必修二直线与圆:真是让我没想到,他俩的关系还挺不简单...
  2. python有趣的小项目-10 个最值得 Python 新人练手的有趣项目
  3. C#实现网页加载后将页面截取成长图片
  4. android 开发书签大全,一站式的导航分享!
  5. 余弦相似度/卷积核之间的成对余弦相似性
  6. 背包——完全背包Warcraft III(哈理工1053)
  7. java synchronized静态同步方法与非静态同步方法,同步语句块
  8. 【Clickhouse】Clickhouse MergeTree家族引擎
  9. Flash游戏开发常用函数代
  10. Super超图,GIS软件
  11. 硬件工程师应该知道的音频功放电路
  12. Java模拟ssh交互_java模拟ssh执行shell命令
  13. vue入门之04-生命周期 数据共享
  14. python爬取网易云音乐百强榜单
  15. win10系统 如何设置定时开关机?
  16. 电子取证平台需求设计文档
  17. 【Hi3519A】测试华为M2221-QL智能摄像头
  18. vmware使用u盘安装系统
  19. React中input的失焦问题
  20. APK可视化修改工具 APK改之理 APK IDE

热门文章

  1. android mds文件,安卓手机如何打开.mdf文件
  2. jdbc连接timesten_采用java链接timesten内存数据库
  3. 园林景观cad_景观广场及绿化设计(附CAD平面图)
  4. apache ii评分怎么评_apache ii评分多少分为危重患者
  5. 1000套精选微信小程序源码
  6. 中国省份城市0-N编号
  7. ArcGIS分享: 地图分幅及编号
  8. 如何设置AD域用户仅登录到指定的计算机?AD域管理软件
  9. Java 接口,多态
  10. 【通信协议】IIC通信协议详解