4字节的int如何转化为一个两字节short?

加盾男爵 2018-09-18 04:23:40
在安卓机需要和一台设备A通信,这台设备A的系统使用C/C++写的,现在遇到一个问题,安卓上有个EditText要求输入一个参数传递给设备A,而设备A的参数是无符号short,取值范围是0-65535;

然后安卓设备,上线判断用户输入没有超过65535的,就把这个参数发给设备A,但问题是java没有无符号。如果参数小于32767,可以直接

String newValue = input_V_EditText.getText().toString();
int v = Integer.valueOf(newValue);


这个项目是我中途接收的,项目里原来有个函数shortToByte(short v);函数,该函数接收一个short然后将这个short转化为2个字节(既byte[2),然后程序会将这两个字节(和其他一些数据)一起发送给设备A,

short转byte[2]的函数

public byte[] shortTobytes2(short number) {
byte[] abyte = new byte[2];
// "&" 与(AND),对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。
abyte[0] = (byte) (0xff & number);
// ">>"右移位,若为正数则高位补0,若为负数则高位补1
abyte[1] = (byte) ((0xff00 & number) >> 8);
return abyte;
}


现在的问题是,当int的值大于32767的时候,如何把这个int转化为short?
...全文
989 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cengdong 2018-09-27
  • 打赏
  • 举报
回复
使用位运算来转啊。。。
gd6321374 2018-09-18
  • 打赏
  • 举报
回复
引用 2 楼 qazaq408 的回复:
[quote=引用 1 楼 gd6321374 的回复:]




这么简单

int val = xx;

if(val > 655535)
{
报错
}


publicx byte[] intToBytes(int val)
{
byte[] byteArray = new byte[2];

stream[0] = (byte)(val & 0xFF); //具体跟字节序有关,可能需要调换位置
stream[1] = (byte)((val >> 8) & 0xFF);

return byteArray;
}

非常感谢。。。
主要我不会java更不会安卓开发,但上个月公司唯一的安卓开发删库跑路了,我被拉壮丁来接收这位仁兄的项目[/quote]




我在公司也是做windows 平台开发
6月公司的Android 开发也跑了,然后我也被迫上梁山。
同病相连啊
加盾男爵 2018-09-18
  • 打赏
  • 举报
回复
引用 1 楼 gd6321374 的回复:




这么简单

int val = xx;

if(val > 655535)
{
报错
}


publicx byte[] intToBytes(int val)
{
byte[] byteArray = new byte[2];

stream[0] = (byte)(val & 0xFF); //具体跟字节序有关,可能需要调换位置
stream[1] = (byte)((val >> 8) & 0xFF);

return byteArray;
}

非常感谢。。。
主要我不会java更不会安卓开发,但上个月公司唯一的安卓开发删库跑路了,我被拉壮丁来接收这位仁兄的项目
gd6321374 2018-09-18
  • 打赏
  • 举报
回复




这么简单

int val = xx;

if(val > 655535)
{
报错
}


publicx byte[] intToBytes(int val)
{
byte[] byteArray = new byte[2];

stream[0] = (byte)(val & 0xFF); //具体跟字节序有关,可能需要调换位置
stream[1] = (byte)((val >> 8) & 0xFF);

return byteArray;
}

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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