免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4672 | 回复: 4

高低字节转换求助 [复制链接]

论坛徽章:
0
发表于 2003-12-26 18:24 |显示全部楼层
下面代码是在SCO上的,请问要完成同样功能,在AIX应该怎样处理?
sscanf((char *)CPINExtend,"%02X%02X%02X%02X%02X%02X%02X%02X",&CPINExtend8[0]
,&CPINExtend8[1],&CPINExtend8[2],&CPINExtend8[3],&CPINExtend8[4],&CPINExtend8[5]
,&CPINExtend8[6],&CPINExtend8[7]);
    sscanf((char *)CPADDING,"%02X%02X%02X%02X%02X%02X%02X%02X",\
                &CPADDING8[0],&CPADDING8[1],&CPADDING8[2],&CPADDING8[3],\
                &CPADDING8[4],&CPADDING8[5],&CPADDING8[6],&CPADDING8[7]);

望各位高手指点

论坛徽章:
0
发表于 2003-12-27 11:55 |显示全部楼层

高低字节转换求助

按照我的理解:本段代码完成16位字符到8位字符的转换,转换规则如下:
取源字符串第N位字符的低4位作为目的字符的高4位
取源字符串第N+1位字符的低4位作为目的字符的低4位。
其中N为(0、2、4、6、8。。。。。)
如源0位为:00110001,1位为00110010,则目的为00010010。
在BIG_ENDIAN和LITTLE_ENDIAN下得出结果会不同,下面是我的解决方法,可以在AIX和SOC下得到相同的结果:
int TransBit(unsigned char *sour,unsigned char *des)
{
    while(*sour != 0x00)
    {
        unsigned char p;
        unsigned char c;
        p=*sour++;
        c=*sour++;
        *des=((p<<4)&0xff)|(((c<<4)&0xff)>;>;4);
        des++;
    }
    return 0;
}
望各位高手斧正

论坛徽章:
0
发表于 2003-12-30 16:35 |显示全部楼层

高低字节转换求助

不好意思,我的理解是错误的,处理是有缺陷的。只能处理‘0’~‘9’之间的字符,太菜了,看书去

论坛徽章:
0
发表于 2003-12-30 16:52 |显示全部楼层

高低字节转换求助

这个东西不难做吧,tcp/ip 代码中的 htonl,htons 等函数就是做这个的。

提供一个最笨的做法,你读入一个整数,然后用一个字符指针指向它,将里头的字节取出来,换个次序放回去。

论坛徽章:
0
发表于 2003-12-31 09:23 |显示全部楼层

高低字节转换求助

谢谢指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP