字符和ASCII码的表示转换问题
问题是这样的,比如我知道现在我要发送的一个字节的16进制的表示为fd,这个在ASCII码里面是没有的,现在我需要把这个字符格式化到一个发送缓冲区buf中,应该怎么做呢?或者说我有一串这样的16进制字节数据,
fd 00 00 fd fd fd fd ff 3e,我需要把他们通过send()函数发送到另一台主机,应该怎么把他们先格式化到一个发送buf中?求解答,谢谢! ascii
[解决办法]
char *szStr="fd0000fdfdfdfdff3e";
char szTemp[256];
int nLen;
memset(szTemp,0,sizeof(szTemp));
nLen = BCD2BIN(szStr,szTemp);
int BCD2BIN(const char* bufBCD, unsigned char* bufBIN)
{
int nCount = strlen(bufBCD) / 2;
int i;
for( i = 0; i<nCount*2; i+=2 )
{
if(bufBCD[i]>='0' && bufBCD[i]<='9')
{
*bufBIN = ((bufBCD[i] - '0')<<4);
}
if(bufBCD[i]>='a' && bufBCD[i]<='f')
{
*bufBIN = ((bufBCD[i] - 'a' + 0x0a)<<4);
}
if(bufBCD[i]>='A' && bufBCD[i]<='F')
{
*bufBIN = ((bufBCD[i] - 'A' + 0x0a)<<4);
}
if(bufBCD[i+1]>='0' && bufBCD[i+1]<='9')
{
*bufBIN += (bufBCD[i+1] - '0');
}
if(bufBCD[i+1]>='a' && bufBCD[i+1]<='f')
{
*bufBIN += (bufBCD[i+1] - 'a' + 0x0a);
}
if(bufBCD[i+1]>='A' && bufBCD[i+1]<='F')
{
*bufBIN += (bufBCD[i+1] - 'A' + 0x0a);
}
bufBIN++;
}
return nCount;
}