压缩BCD码 问题 求解

nonplus 2013-07-04 04:44:07
有一串字符串
s[0]=0xfd;
s[1]=0xff;
s[2]=0xfd;
s[3]=0xff;
s[4]=0x1d;
s[5]=0xff;
s[6]=0x80;
s[7]=0x1f;

想把s[4]和s[6]的前4位 替换掉s[1],s[3]的后4位,s4和s6的后四位补0,转换后得出的结果为
s[0]=0xfd;
s[1]=0xf1;
s[2]=0xfd;
s[3]=0xf8;
s[4]=0xd0;
s[5]=0xff;
s[6]=0x00;
s[7]=0x1f;

解决思路和代码都可以,哈哈,先谢谢大家 。
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2013-07-04
  • 打赏
  • 举报
回复
12楼已经解决,不多言!
图灵狗 2013-07-04
  • 打赏
  • 举报
回复
类似这样的方法:

s[1] &= 0xf0;
s[1] |= s[4] & 0x0f;
s[4] &= 0x0f;
s[4] |= s[1] & 0xf0;
lwhlx 2013-07-04
  • 打赏
  • 举报
回复
s[1] = s[1]&0xF0 + ((s[4]&0xF0)>>4);
s[3] = s[3]&0xF0 + ((s[6]&0xF0)>>4);

s[4] = s[4]<<4;
s[6] = s[6]<<4;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧