short转换成byte[]时,数值为负,请高手帮我看看程序啊。

kaiyekai 2011-03-11 04:32:36
我需要把一个short数值A放到数组里,当A>255时,需要两个字节的数组。我发现b[1]的值为负,和我想象中的不一样。

public static void putShort(byte b[], short s, int index) {
b[index] = (byte) ((s >> 8) & 0xff);
b[index + 1] = (byte) ((s >> 0) & 0xff);
}
例如 A=1234
期望值为: b[0]=0x04, b[1]=0xD2
真实值为:b[0]=0x04, b[1]=0x-46

大家能不能帮我看看,这个程序怎么改啊,多谢了!
...全文
296 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjx398 2011-03-17
  • 打赏
  • 举报
回复
先与然后再移位
(s & 0xff)>>8
scliuqiang 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 kaiyekai 的回复:]。

例如 A=1234
期望值为: b[0]=0x04, b[1]=0xD2
真实值为:b[0]=0x04, b[1]=0x-46
[/Quote]
这样无法实现的吧,如果A低八位的值超过了127,
取出低八位强转为byte符号位就为1,自然就是负值了
magong 2011-03-12
  • 打赏
  • 举报
回复
这个程序没有错,不需要改。
byte中数值如果高位为1,记得打印的时候将高位置为0就OK了。
如下最后一行代码

byte b = (byte)0xD2;
System.out.println(b);
System.out.println(b&0x000000FF);
ansensp 2011-03-12
  • 打赏
  • 举报
回复
进行右移操作的时 short将被提升为int

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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