[J2SE] 請問int轉成4個bytes的問題
各位大哥您好,最近在寫一個RS232跟硬體溝通的程式,需要把int轉成4個bytes再放入
bytebuffer裡面,其中int轉bytes程式碼如下:
byte pTime[] = new byte[4];
pTime[0] = (byte)( ((posixtime & 0xFF000000) >>> 24) & 0xFF);
pTime[1] = (byte)( ((posixtime & 0x00FF0000) >>> 16) & 0xFF);
pTime[2] = (byte)( ((posixtime & 0x0000FF00) >>> 8) & 0xFF);
pTime[3] = (byte)( ((posixtime & 0x000000FF) ) & 0xFF);
posixtime為任一正整數,我是使用系統時間的秒數,如下
int posixtime=(int)(rightNow.getTimeInMillis()/1000);
但轉成bytes後,超過128的數值都會變成負數,這是因為JAVA的byte
是signed byte,請問我該如何把它轉成unsigned byte,放入bytebuffer裡
,可以正確的透過RS-232寫出去???
麻煩各位大哥能替小弟解答一下...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.79.194
→
01/18 18:05, , 1F
01/18 18:05, 1F
推
01/18 18:22, , 2F
01/18 18:22, 2F
→
01/18 18:27, , 3F
01/18 18:27, 3F
→
01/18 18:33, , 4F
01/18 18:33, 4F
→
01/18 18:47, , 5F
01/18 18:47, 5F
→
01/18 19:30, , 6F
01/18 19:30, 6F
→
01/18 20:22, , 7F
01/18 20:22, 7F
→
01/18 21:27, , 8F
01/18 21:27, 8F
→
01/18 21:34, , 9F
01/18 21:34, 9F
→
01/18 21:35, , 10F
01/18 21:35, 10F
推
01/18 21:59, , 11F
01/18 21:59, 11F
→
01/18 22:01, , 12F
01/18 22:01, 12F
→
01/18 23:59, , 13F
01/18 23:59, 13F
→
01/19 02:05, , 14F
01/19 02:05, 14F
→
01/19 02:10, , 15F
01/19 02:10, 15F
→
01/19 02:15, , 16F
01/19 02:15, 16F