阅读:1164回复:5
问 mailporn 一个问题
http://cn.google.yahoo.com/bin/query_cn?p=%bd%e2%b1%e0%c2%eb&u=&hc=0&hs=0
谁能找到其中的三个汉字是什么? 求教解码方法 [编辑 - 8/9/02 by zhaoyubian] [编辑 - 8/9/02 by zhaoyubian] |
|
沙发#
发布于:2002-08-09 12:13
我用下面方法解码有问题,
void DecodeGzipStr(char *str, int bufsize) { char* newString=new char[bufsize+1]; if(newString==NULL)return; strcpy(newString,str); char* sResult =new char[bufsize+1]; if(sResult==NULL)return; *sResult=\'\\0\'; char ch,ch1,ch2; for(int i=0;i<(int)strlen(newString);) { ch=*(newString+i); if (ch==\'%\') { ch1=*(newString+i+1); ch2=*(newString+i+2); i++;i++; if (ch1>=\'A\') ch1=10+ch1-\'A\'; else ch1=ch1-\'0\'; if (ch2>=\'A\') ch2=10+ch2-\'A\'; else ch2=ch2-\'0\'; strcat(sResult,\"x\"); *(sResult+strlen(sResult)-1)=ch1*16+ch2; i++; } else { i++; strcat(sResult,\"x\"); *(sResult+strlen(sResult)-1)=ch; } } bufsize=strlen(sResult); strcpy(str,sResult); delete sResult; delete newString; return; } |
|
板凳#
发布于:2002-08-09 13:07
我不知你到底要解什么?你给出的这三个汉字只是普通的Unicode码而已,直接把%换成0x就行了,每两个字节就变成了一个汉字
你可能说的是IIS中的Unicode漏吗? 它的解码的算法基本如下: %ss%hh -> (0xss - 0xc0) * 0x40 + 0xhh 只有当0x00<= hh < 0x40 时才是这样解码的 |
|
|
地板#
发布于:2002-08-09 13:12
我看你的程序中好象是要把它转换成十进制,但为什么还有下面这句话:
strcat(sResult,\"x\"); |
|
|
地下室#
发布于:2002-08-09 13:59
非常感谢 !
|
|
5楼#
发布于:2002-08-09 15:37
好象没有给分哦
|
|
|