首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串转换成二进制或16进制解决方法

2012-04-25 
字符串转换成二进制或16进制C/C++ code//例如:现有字符串7F8D;怎么转换成二进制,或者十六进制的ACSI码

字符串转换成二进制或16进制

C/C++ code
//例如:现有字符串  "7F8D";怎么转换成二进制,或者十六进制的ACSI码" 37 46 38 44 "//如下代码怎么只能输出一个字节CString strNum(L"7F8D");const int nLength = strNum.GetLength();BYTE *strBuffer = new BYTE[nLength];ZeroMemory(strBuffer,nLength);memcpy_s(strBuffer,nLength,strNum.GetBuffer(),nLength);for(int i = 0;i < nLength;++i)    TRACE("%s",strBuffer++);




或者各位大神有啥好建议比如 从 INI 文件读取一条16进制的字符串,怎么在内存数据中,或者文件映射的内存中查找符合条件的地址

[解决办法]
C/C++ code
#include<stdio.h>int main(){    char str[]="7F8D";    char str2[8]={0};    sprintf(str2, "%x%x%x%x", str[0], str[1], str[2], str[3]);    printf("%s\n", str2);    return 0;}
[解决办法]
仅供参考
C/C++ code
void HexDump(int cn,char *buf,int len) {    int i,j,k;    char binstr[80];    Lock(&cs_HEX);    for (i=0;i<len;i++) {        if (0==(i%16)) {            sprintf(binstr,"%03d %04x -",cn,i);            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);        } else if (15==(i%16)) {            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);            sprintf(binstr,"%s  ",binstr);            for (j=i-15;j<=i;j++) {                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');            }            Log("%s\n",binstr);        } else {            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);        }    }    if (0!=(i%16)) {        k=16-(i%16);        for (j=0;j<k;j++) {            sprintf(binstr,"%s   ",binstr);        }        sprintf(binstr,"%s  ",binstr);        k=16-k;        for (j=i-k;j<i;j++) {            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');        }        Log("%s\n",binstr);    }    Unlock(&cs_HEX);} 

热点排行