请问关于java中int和short转signed有符号数据,请看示例

BigBug博客 2020-09-09 09:19:32
在硬件对接中,我这边输出值需要转为有符号和无符号16 bit数据,转为无符号Unsigned已经可以使用,如下:

//将data字节型数据转换为0~65535 (0xFFFF 即 WORD)。
public static int getUnsignedByte(short data){
return data&0x0FFFF ;
}

请问怎么转为signed有符号的数据啊,请各位大佬帮帮忙!
...全文
680 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2020-09-09
  • 打赏
  • 举报
回复
java中的int跟short 本身就是自带符号的 所以根本就不用转...这些有符号跟无符号的转换 你看看考虑下使用位运算
qybao 2020-09-09
  • 打赏
  • 举报
回复
转成有符号数据就直接强行转换就好了 short s1 = (short)(Short.MAX_VALUE + 2); int a = s1 & 0xFFFF; //有符号short转无符号int short s2 = (short)a; //无符号int转有符号short,直接强行转换即可 System.out.printf("%d, %d, %d\n", s1, a, s2); int和long之前也如此 int n1 = Integer.MAX_VALUE + 2; long l = n1 & 0xFFFFFFFFL; //有符号int转无符号long int n2 = (int)l; //无符号long转有符号int,直接强行转换即可 System.out.printf("%d, %d, %d\n", n1, l, n2);
BigBug博客 2020-09-09
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
转成有符号数据就直接强行转换就好了 short s1 = (short)(Short.MAX_VALUE + 2); int a = s1 & 0xFFFF; //有符号short转无符号int short s2 = (short)a; //无符号int转有符号short,直接强行转换即可 System.out.printf("%d, %d, %d\n", s1, a, s2); int和long之前也如此 int n1 = Integer.MAX_VALUE + 2; long l = n1 & 0xFFFFFFFFL; //有符号int转无符号long int n2 = (int)l; //无符号long转有符号int,直接强行转换即可 System.out.printf("%d, %d, %d\n", n1, l, n2);
谢谢大佬!
BigBug博客 2020-09-09
  • 打赏
  • 举报
回复
引用 2 楼 弄个昵称真的好难 的回复:
java中的int跟short 本身就是自带符号的 所以根本就不用转...这些有符号跟无符号的转换 你看看考虑下使用位运算
懂了,试过了,确实有符号的不用转,谢谢大佬

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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