C++将无结束符字符串(ASCII)转为数字数值的快速方法(支持16进制)
来源:互联网 发布:淘宝可以多久确认收货 编辑:程序博客网 时间:2024/06/05 17:31
通常情况下的字符串转为数字,可以使用C的atoi,或者C++的sstream来转换,但是这要求待转换源字符串要有\0结束符,如果只想转换字符串中一部分,或者转换char*中不带结束符的字符串的时候,以上的方式均需要将字符拷贝出来并且给出结束符才能进行下一步转换,有了拷贝的动作转换的速度就慢了,以下的方法是根据ASCII字符对应数值的特点循环将字符转换为数字数值的函数,并支持16进制。
//************************************// Method: AsciiToByte 将ASCII字符转换为数字// Returns: BYTE 返回的数字// Parameter: BYTE b 待转换的字符//************************************BYTE AsciiToByte(BYTE b){BYTE ret = 0;if(b >= '0' && b <= '9')ret = b - '0';else if(b >= 'A' && b <= 'F')ret = b - 'A' + 10;else if(b >= 'a' && b <= 'f')ret = b - 'a' + 10;elseret = 0;return ret;}//************************************// Method: ReadNumber 将指定长度字符串转换为数字// Returns: int 返回的数值// Parameter: BYTE * str 待转换的字符串指针// Parameter: int count 待转换的字符串长度// Parameter: bool radix16 是否16进制,默认false//************************************int ReadNumber(BYTE *str,int count, bool radix16 = false){int ret = 0;while(count-- > 0){ret *= radix16 ? 16 : 10;ret += AsciiToByte(*str++);}return ret;}
使用方法:
char *str = "12345ABCD";int num10 = ReadNumber((BYTE*)str, 5);int num16 = ReadNumber((BYTE*)str + 4, 5, true);结果num10=12345,num16=371661
阅读全文
0 0
- C++将无结束符字符串(ASCII)转为数字数值的快速方法(支持16进制)
- awk将字符串转为数字的方法
- 【C++/CLI】如何将数值转为字符串
- C语言将一个字符串的字符转为一个数字
- Excel将文本型数字转为数值型的8种方法
- 将字符串转为数字
- 将字符串转为数字
- (无脑的博客)c语言将数字倒转的方法~~
- 如何将十六进制字符串转换为数字(数值)
- Oracle将字符串转为数字
- Qt 将图片转为字符串的方法。
- 支持windows linux下将指定内存段转为16进制与ascii码的日志输出类
- php将字符串转为ASCII,php将中文汉字字符串转为ASCII,以及互转
- 将数字转为字母(转)
- 将C语言的字符串转为OC的字符串
- php将金钱小写数字转为金钱大写的方法
- 剑指offer(52):字符串转为数字
- C++将数字转为字符串,并拼接
- 砥砺前行20载,他见证了中国制造信息化的成长
- Axure chrome 扩展显示已损坏的解决方法
- Struts使用用解耦合的方式获取Session
- 有营养的废话:人工智能、大数据和高性能计算融合成为趋势丨AI推理服务器,能读懂福尔摩斯?【软件网每日新闻播报│第10-24期】
- 车载设置--自定义版本信息 build.prop生成过程分析
- C++将无结束符字符串(ASCII)转为数字数值的快速方法(支持16进制)
- 爬坑日记--------Windows安装redis
- 基础练习 查找整数
- TCP通信丢包原因总结
- js HTML DOM对象
- Napa.js简介
- 信管16数据结构实验6:树和二叉树的实验2
- ML-0101-梯度下降小结
- Python可视化学习笔记一