开源polarssl加密库使用详解之一:十六进制字符串转化为十六进制数字
2014-01-11 16:02
381 查看
第一个函数:
int unhexify(unsigned char *obuf, const char *ibuf)
在很多时候,我们要从文本中读取十六进制的密钥,或者其它信息。但是文本中是十六进制的字符,需要转换为十六进制的数字。此函就完成这样的功能。
实现代码如下:
int unhexify(unsigned char *obuf, const char *ibuf)
此代码简单,有c语言基础的都应该能看懂,不懂的人可以回复我。
与之相反的,还有一个把十六进制数字转换为十六进制字符串:void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
实现代码如下:
==========================
下一篇准备讲解伪随机数发生器。
int unhexify(unsigned char *obuf, const char *ibuf)
在很多时候,我们要从文本中读取十六进制的密钥,或者其它信息。但是文本中是十六进制的字符,需要转换为十六进制的数字。此函就完成这样的功能。
实现代码如下:
int unhexify(unsigned char *obuf, const char *ibuf)
int unhexify(unsigned char *obuf, const char *ibuf) { unsigned char c, c2; int len = strlen(ibuf) / 2; assert(!(strlen(ibuf) %1)); // must be even number of bytes while (*ibuf != 0) { c = *ibuf++; if( c >= '0' && c <= '9' ) c -= '0'; else if( c >= 'a' && c <= 'f' ) c -= 'a' - 10; else if( c >= 'A' && c <= 'F' ) c -= 'A' - 10; else assert( 0 ); c2 = *ibuf++; if( c2 >= '0' && c2 <= '9' ) c2 -= '0'; else if( c2 >= 'a' && c2 <= 'f' ) c2 -= 'a' - 10; else if( c2 >= 'A' && c2 <= 'F' ) c2 -= 'A' - 10; else assert( 0 ); *obuf++ = ( c << 4 ) | c2; } return len; }
此代码简单,有c语言基础的都应该能看懂,不懂的人可以回复我。
与之相反的,还有一个把十六进制数字转换为十六进制字符串:void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
实现代码如下:
void hexify(unsigned char *obuf, const unsigned char *ibuf, int len) { unsigned char l, h; while (len != 0) { h = (*ibuf) / 16; l = (*ibuf) % 16; if( h < 10 ) *obuf++ = '0' + h; else *obuf++ = 'a' + h - 10; if( l < 10 ) *obuf++ = '0' + l; else *obuf++ = 'a' + l - 10; ++ibuf; len--; } }
==========================
下一篇准备讲解伪随机数发生器。
相关文章推荐
- 开源polarssl加密库使用详解之三:哈希函数
- 开源polarssl加密库使用详解之二:伪随机数发生器(DRBG)
- Java 16进制字符串转化成十六进制数字
- 将一串数字转化为中文字符串,使用 C# 将数字转换成大写人民币 (例如:用户输入2300,系统就会显示两千三百元 )
- 不使用库函数将字符串转化为数字 实现
- 详解C++中十六进制字符串转数字(数值)
- 关于字符串中数字字符转化为数字 sscanf的使用以及strchr的使用
- 数字转化为字符串,sprintf使用(弱菜笔记)
- 字符串转化为数字(不使用库函数)
- 数字转化为字符串,sprintf使用(弱菜笔记)
- 编写hoti(s),把由十六进制数字组成的字符串(0x或0X)转化为与之等价的整形值。字符串中允许包含的数字为:0-9,a-f或A-F。
- 十六进制字符串转化成UIColor对象(使用类目为UIColor类扩展一个类方法)
- js字符串转化为数字 详解
- js字符串转化为数字 详解(转载)
- Python 使用map()和reduce() 函数将带小数点的字符串数字转化成小数
- 字符串内特殊字符在html_javascript_xml等内使用时的转换 ,"缺少十六进制数字"错误的处理
- 关于字符串中数字字符转化为数字 sscanf的使用以及strchr的使用
- js关键字typeof和instanceof的使用,以及js字符串与数字相互转化
- 数字使用相应的加密策略传递一个字符串后Java实现代码