读书人

十六进制转为字符的有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

十六进制转为字符的问题
我想把从控制读到的十六进制数转为这个十六进制对应的字符,应该怎么转啊~比如说我从控件读到的是f7,那如何转成f7对应的字符。请各位高手指教~谢谢!!
[解决办法]

char c = 0xf7;

[解决办法]
// ANSI C:
int i = 0;
char str[] = "0xF7";
i = (int)strtol(str, NULL, 0);

// Windows API:
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib");
int i = 0;
TCHAR str[] = TEXT("0xF7");
// MFC 中在 StrToIntEx 前加 ::
if (StrToIntEx(str, STIF_SUPPORT_HEX, &i))
{
// 转换成功
}

[解决办法]
char c = 0xf7; 这个其实是可以的
[解决办法]
引用:
C/C++ code?1234// ANSI C:int i = 0;char str[] = "0xF7";i = (int)strtol(str, NULL, 0);
C/C++ code?12345678910// Windows API:#include <shlwapi.h>#pragma comment(lib, "shlwapi.lib");int i =……

这……反了吧,人家是要从数字转换成字符~~从int型的数,转成char类型的字符?而不是字符串??
[解决办法]
看了反向转换的代码,你应该知道怎么从HEX到HexStr了.



//return byte changed
int hexstr2mem(char *hexstr,unsigned char *mem,int meml)
{
//four bit ,mem to ascii table
static const char hex[]="0123456789ABCDEF";
static const char hex2[]=/*0123456789*/"abcdef";
static char hexr[256]={1,0};//rtable
int i;
int index;
int bytes=0;
int hexstrl=strlen(hexstr);

if (1==hexr[0])
{
hexr[0]=0;
for (i=0;i<sizeof(hex)-1;++i)
hexr[hex[i]]=i;
for (i=0;i<sizeof(hex2)-1;++i)
hexr[hex2[i]]=10+i;
}

for (index=0;index<hexstrl && bytes<meml;index+=2,++bytes)
mem[bytes]= hexr[hexstr[index]]<<4
[解决办法]
hexr[hexstr[index+1]];
return bytes+1;
}

读书人网 >VC/MFC

热点推荐