字符编码转换问题中遇到的数制转换问题
滩头沙 发布于 2011年05月05日 17时 (5评) 1人收藏此代码, 我要收藏(?)
D0DEB8C4BBB7BEB3B1E4C1BFCEC4BCFE2E70726F66696C65A1A3D4
你看懂上面的一堆字符串了吗?
今天要求从数据库里把发送过的业务激活指令提出来。最后发现写在表里的指令记录是如上面那些的字符串!明显这是数据的十六进制的表示法。可是怎么写成了字符串呢!直接存二进制不好吗? 唉!不管了搞个程序转换一下吧!
////代码开始
#include using namespace std; long int hexTodec(const char *str , int length ) { long int liRestul = 0 ; int iTrans = 0; for(int i = length-1 ,j = 0 ; i >=0 ; i--,j++) { //cout< //cout< } //cout< int iLength = str->length(); int iAsiic = 0; char p; string restul; for (int i = 0 ; i< iLength ; i=i+2) { string sHex = str->substr(i,2); //cout< res->append(1,p); } //cout<<*res< if(argc < 2) { cout<<\"please input 2byte HEX string! \"< //cout< 滩头沙 发表于 2011-05-05 17:07 回复此评论 在linux下gcc编译: #gcc -lstdc++ -o hexdecode hexdecode.cpp 运行结果: #hexdecode D0DEB8C4BBB7BEB3B1E4C1BFCEC4BCFE2E70726F66696C65A1 修改环境变量文件.profile 自己试试吧! 上面的一堆字符串是我的一篇日志。 现在想想用这种法子存在数据库中可能是为了防止好多特殊字符在组装sql时要转义的问题吧! redraiment 发表于 2011-05-06 10:15 回复此评论 如果是 Linux 下的话,我一般这样来做: 1 $ bc -q < 3 > D0DEB8C4BBB7BEB3B1E4C1BFCEC4BCFE2E70726F66696C65A1A3D4 4 > quit 5 > EOF 结果是: 1 85924137037133326111680073126294360402595667507568317620285449172 滩头沙 发表于 2011-05-09 16:03 回复此评论 引用来自“redraiment”的评论 如果是 Linux 下的话,我一般这样来做: 1 $ bc -q < 3 > D0DEB8C4BBB7BEB3B1E4C1BFCEC4BCFE2E70726F66696C65A1A3D4 4 > quit 5 > EOF 结果是: 1 85924137037133326111680073126294360402595667507568317620285449172 我这段看了像是数制转换,其实是为了把16进制的符串还原成正常的ANIS/ASIIC编码。 滩头沙 发表于 2011-05-09 16:07 回复此评论 我改一下标题! redraiment 发表于 2011-05-09 17:58 回复此评论 我这段看了像是数制转换,其实是为了把16进制的符串还原成正常的 ANIS/ASIIC编码。 好吧,我只看了函数的名字 hexTodec... 因篇幅问题不能全部显示,请点此查看更多更全内容