TypeCodes

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

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

因此,在转换过程中,可以考虑将原来的这个十六进制字符串在内存中复制一份,然后再对这个复制的副本进行读写,这样就产生副作用了。下面是根据原来的两个程序改进的的代码,主要通过malloc函数开辟一个内存空间,然后复制十六进制字符串中的数据到这个内存空间中,最后对它进行“读写”。

在下面这两个改进的代码中,还考虑到了这个十六进制字符串以0x开头的形式出现,所以增加了这种情况的处理。

- 阅读剩余部分 -

CentOS7系统如何修改主机名

前段时间博客一直处于关闭状态,主要是做了一些升级。之前博主用的是CentOS6.5系统,然后升级到了如今的CentOS7版本。另外Nginx、Mysql和PHP都做了相应的版本升级,后续文章会给大家分享下。这篇文章主要讲讲CentOS7系统如何修改主机名。

CentOS7系统如何修改主机名

- 阅读剩余部分 -

在UEStudio/UltraEdit中打造C/C#/JAVA等语言的编译器

像Emacs、Vim、UEStudio/UltraEdit、Sublime text等非IDE类的文本编辑器,都不会自带某种语言的编译功能,这对于不想开IDE的程序狗来说很是蛋疼。尤其是需要切换到不同语言做开发时,非常不方便,总不能这边开一个VS,那边开一个Eclipse吧。于是自己折腾了一番,通过配置可以在UEStudio或者UltraEdit中直接将写好的C/C++/C#/JAVA等代码编译并运行输出结果。

在UEStudio/UltraEdit中打造C/C#/JAVA等语言的编译器

- 阅读剩余部分 -

初始化Oracle数据库的bat批处理脚本和shell脚本

在使用Oracle数据库的时候,经常会用到表结构、存储过程、视图以及表数据等等元素的导入和导出。如果在Windows的cmd窗口中使用sqlplus的命令登录Oracle后,直接使用@ sql导入文件路径或者start sql导入文件路径,就有一个缺陷:不会产生跟踪日志文件,这样就没法了解哪些sql语句执行成功了,哪些sql语句执行失败从而导致整个数据库初始化失败了等情况。另外,无论是在Windows系统还是Linux系统,手输命令很麻烦也很容易出错,所以自己整理了一份适用于Windows的bat批处理脚本和一份适用于Linux系统的shell脚本。

这两份脚本代码比较简单,主要是利用了sqlplus命令将包含多条sql语句用于初始化Oracle数据库的sql文件执行。其中,suntsm/[email protected]/orcl数据库用户名/用户密码@数据库IP:1521/实例名的组合,当然Oracle默认的端口1521可以省略。另外,tsmstuct.sqltsmdata.sql文件分别用于初始化表结构等数据和表数据。大家可以根据实际情况修改。

- 阅读剩余部分 -

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

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

1 实现思路

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

需要注意的是:在调用HexStrToBytes( String HexStr )方法将将16进制字符串转换成字节数组时,需要捕获异常,避免这个十六进制字符串包含不是十六进制的字符。

- 阅读剩余部分 -

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

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

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

- 阅读剩余部分 -