我目前的問題是我喜歡通過藍牙發送一些命令到嵌入式設備(16位編碼)。不幸的是,似乎Java中存在轉換錯誤,或者至少我不知道如何處理它。Android的java轉換問題
這些位是例如1001 0010 1011 0010 我想過爲此使用char(16位),但有時它會被Java轉換爲24位(3個印刷字符),當我嘗試將它添加到字符串中時。這取決於整數值。
我怎樣才能得到打印的ASCII(或其他)字符?藍牙功能需要一個字符串作爲參數。
int a = 127, b = 221; // 0-255 32 bit
char p1 = (char) b; // 0000 0000 bbbb bbbb 16 bit
char p2 = (char) a; // 0000 0000 aaaa aaaa 16 bit
// bbbb bbbb aaaa aaaa
char anUnsignedShort = (char) ((p1 << 8) | p2); // 16 bit
System.out.println(""+(char)2+anUnsignedShort+(char)3);
// ???? ???? bbbb bbbb aaaa aaaa -- 24bits sometimes. Why ???
那麼,我發現它是一個真正的java問題,通過打印(字符)137到139 ...我怎樣才能打印139爲8位字符? (6466): I/System.out(6466): I/System.out(6466):012ï – Nils 2010-08-29 16:58:54
我看到http://www.fileformat.info /info/unicode/char/252c/index.htm,後面跟着http://www.fileformat.info/info/unicode/char/00eb/index.htm,http://www.fileformat.info/info/unicode/ char/00e8/index.htm和http://www.fileformat.info/info/unicode/char/00ef/index.htm。這些與你的問題有什麼關係? – trashgod 2010-08-29 18:51:32