→ tkcn:寫到檔案確定是big-endian沒錯,但我不敢肯定記憶體中也是 07/31 14:20
※ 引述《poc7667 (poc)》之銘言:
: 再寫有關這類的程式
: 我輸入的資料是從Java Text Area讀取 "86 00 00 00 01 82 05 "
: 類似這樣的字串
: 然後就直接給他寫入
: outputStream.write(output.getText().getBytes());
: 在Java Text Area資料格式應該是字串,RS232應該是吃"16進位數值資料"
: 這樣直接丟過去會不會有錯呢?or應該如何做個轉換才好。
你自己都說是收數值資料囉 :)
以 "86" 來說,這是兩個 unicode 字元,
在記憶體中的值為 0x0038 和 0x0036
( 印象中 Java 是 big-endian? 若有錯請指正 )
而所謂的數值 86,
就真的是 16 進位中的 86,
在記憶體中的值就是 0x86
所以你寫入的值確實是有問題的,
如果要自己轉成 "數值" 86,
你可能會需要用到 String 和 Integer 所提供的方法。
讀的部份也是一樣,
從 RS232 收到的是數值,
必須自己轉成 unicode,
才會是你想要看到的數字字串。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.169.116
※ 編輯: tkcn 來自: 61.230.169.116 (07/31 03:42)