TypeCodes

视角:C语言将十六进制字符串转成十进制整数

在前文《再议C语言将十六进制字符串转成十进制整数》@大致 童鞋帮忙提了一个思路:直接将指针p读取的十六进制字符串中的单个字符转换后的结果保存在iResult中,而不是保存在指针p指向的内存中。这样思路更为简洁,下面是具体的两个实现程序。

1 从高位到低位单个字符转换

正向转换时,提前判断出字符串中部分非法字符,然后根据+-0x0X …

- 阅读剩余部分 -

再议C语言将十六进制字符串转成十进制整数

前文《C语言将十六进制字符串转成十进制整数》讲述了将十六进制字符串中单个字符分别从高位到低位正序和从低位到高位逆序转换成对应的十进制数,今天在看原文的程序发现一个不好的地方:由于使用了char * p = HexStr;,也就是直接使用指针p将这个十六进制字符串进行了读取和改写。这样会造成在调用了HexStr2Integer转换函数后,就不能再次使用这个十六进制字符串了。

因此,在转换过程中,可以考虑将原来的这个十六进制字符串在内存中复制一份,然后再对这个复制的副本进行读写 …

- 阅读剩余部分 -

C语言将十六进制字符串转成十进制整数

C/C++处理十六进制文件中的报文内容时,经常会遇到先读取报文头中的长度(例如"E2"、"1F"、"-eE2"等等),再读取报文体中的内容的情况。那么就需要把报文头中表示长度的十六进制字符串转换成十进制的整形数据。

转换方法有两种,一种是正向从字符串低位到高位依次转换,另一种是逆向从字符串高位到低位依次转换。原理都是利用指针变量依次指向十六进制字符串中的单个字符,然后通过ASCII码表转换成对应的整数。考虑到十进制的字符串中可能会出现正负号,即转换后可能出现负整数,所以增加了对这种情况的处理。下面是两种方法的具体代码 …

- 阅读剩余部分 -