TypeCodes

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

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

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

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

- 阅读剩余部分 -

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

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

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

- 阅读剩余部分 -

C#实现十六进制字符串异或(二)

上一篇文章主要利用C#自带的Convert.ToInt32(HexString, 16)方法实现了两个十六进制字符串异或的操作。这篇文章主要利用C#字节数组来实现这个功能。

1 实现思路

现将这两个十六进制字符串都转换成对应的字节数组,然后通过数组中每个元素进行异或得到一个0~15范围内的整数,最后将这个整数转换成对应的十六进制字符即可。这个思路和前文《C语言实现十六进制字符串异或》是类似的。

需要注意的是 …

- 阅读剩余部分 -

C#实现十六进制字符串异或(一)

前面用C/C++实现了两个十六进制的字符串进行异或(查看该文),这篇文章利用C#来实现这个功能。由于C#命名空间里已经封装好了很多类和方法,不用像之前用C实现十六进制字符串异或那样,需要自己写相关的函数,所以能够利用C#很快完成这个字符串异或功能。

用C#实现两个十六进制的字符串进行异或和用C/C++实现两个十六进制的字符串进行异或的思路是一样的,对比着之前用C实现的那篇文章,可以很好理解。

关键点一

弄清十六进制字符串异或的思路 …

- 阅读剩余部分 -

图文实例说MFC制作工具的心得(一)

上篇文章说了用MFC制作一个十六进制字符串异或的工具,这篇文章就以这个工具为演示总结一下自己的学习心得。

MFC十六进制异或工具

1 控制用户输入数据的长度

在给用于用户输入十六进制字符串数据的Edit Control控件添加变量时,可以在“最大字符数”这个选项中填入一个整数,例如这个工具最大字节就限制在500内。这样就会生成如下代码,作用是在数据交互时自动截取前面500个字符。

 1
 2
 3
 4
 5 …

- 阅读剩余部分 -

MFC写了一个十六进制字符串异或的工具

在写完上一篇文章《十六进制字符串异或》后,网上查了下貌似没有十六进制字符串异或的工具,于是想自己用C++写一个。由于之前没弄过MFC,所以周末花了两天时间边学边做,最后效果如下:

MFC十六进制异或的工具初始界面

图一:工具的初始界面

十六进制字符串异或效果

图二:十六进制字符串异或效果

鼠标移至工具的顶部再右键的效果

图三:鼠标移至工具的顶部再右键的效果

点击“关于 HexStrXor(A)”效果”效果" )

图四:点击“关于 HexStrXor …

- 阅读剩余部分 -

十六进制字符串异或

十六进制字符串异或是C/C++工作中经常遇到的情况,因此自己写了一个异或方法。程序中关键的三点:

1 关键点一

弄清十六进制字符串异或的思路:一个十六进制字符其实表示的是一个字节的低4位,但是在ASCII码表中,它是作为一个字符,即占用了1个字节。所以需要先把这个字符转换成对应的十进制数(范围是0~15),这个就是int char2int( char input …

- 阅读剩余部分 -