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

字符和ASCII码的表示转换有关问题

2013-07-01 
字符和ASCII码的表示转换问题问题是这样的,比如我知道现在我要发送的一个字节的16进制的表示为fd,这个在AS

字符和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);

发送这个长度为nLen的字符串szTemp即可。

希望对你有所帮助。

BCD2BIN这个函数如下

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;
}

热点排行