字符串转换成二进制或16进制
//例如:现有字符串 "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++);
#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;}
[解决办法]
仅供参考
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);}