关于数字解析的问题

xingxuerui 2010-07-01 05:28:56
本人是菜鸟

高难度啊

我有一个负数是用3个字节的补码表示的,3个字节分别存放在3个Byte类型的数组byte[0],byte[1],byte[2]中。将这3个字节拼接成完整的24位的补码,并显示他的十进制数。

谢谢啦 麻烦各位帮帮忙
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingxuerui 2010-07-02
  • 打赏
  • 举报
回复
对了 n += a << 8 应该改为 n|=a << 8吧 如果是加法 算出来了就不是拼接了 是加法了
ccrun.com 2010-07-02
  • 打赏
  • 举报
回复
问题解决了就结帖吧,夜长梦多.
ThinkHand 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xingxuerui 的回复:]

妖哥 太感谢了。眼泪哗哗的
[/Quote]
感谢最好的是散发,多实惠啊!磨嘴皮太费功夫了。
xingxuerui 2010-07-02
  • 打赏
  • 举报
回复
妖哥 太感谢了。眼泪哗哗的
ccrun.com 2010-07-01
  • 打赏
  • 举报
回复
如果byte[0]存放的是低位,byte[2]是高位:
byte b[3] = { 0x01, 0x02, 0x03};
int n = 0;
memcpy(&n, b, 3);

// 显示完整的24位补码的值
ShowMessage(IntToHex(n, 8));


如果byte[0]存放的是高位,byte[2]是低位:
byte b[3] = { 0x01, 0x02, 0x03};

int a = b[0];
int n = a << 16;

a = b[1];
n += a << 8;

n += b[2];

ShowMessage(IntToHex(n, 8));
周药师 2010-07-01
  • 打赏
  • 举报
回复
没有看懂你的意思
你把意思表述清楚点

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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