我想通過藍牙發送任何值,我的意思是值爲0-255,但我無法將此值轉換爲字符串中的字符。我嘗試了幾種不同的方式,但沒有成功。將字節轉換爲特殊字符Java
int a= 240 ;
char z=(char)a;
mConnectedThread.write("START"+"\240"+","+"\0240"+","+"\030"+","+Integer.toString(a)+","+z+","+"\0f1"+"STOP");
我得到這個(左 - 十進制值,以ASCII字符權值):
- 83的 '
- 84'T'
- 65-「A '
- 82- 'R'
- 84- 'T'
- 194-'A'
- 160- ''
- 44- ''
- 20 - '\ 024'
- 48 '0'
- 44- ''
- 24 - '\ 030'
- 44- ''
- 50 '2'
- 52-'4'
- 48 '0'
- 44- ''
- 195-'A '
- 176- '°'
- 44', '
- 0 - '\ 0'
- 102-'f'
- 49-'1'
- 83 -'S '
- 84'T'
- 79'O '
- 80'P'
當我發送\030
時,我收到一個字符24-'\30'
,但我不能發送更大的數字。
所以我的問題是:如何在一個字符串字符中設置/轉換0-255範圍內的任何值。我不需要顯示這一點,這並不重要。
我不能肯定你問的是,Java字符並不總是一個字節(一個字節總是一個字節)。我認爲你只需要編碼你的字符,或使用'byte []'。 –
你是如何將通過藍牙接收的字節數組轉換爲字符串的? –
我不需要轉換這些數據,因爲它只是:command +一個很大的值(0-255)+結束命令,但是當我想把對象轉換成字符串時,我使用類似這樣的東西(而不是exacly):[link](http ://example.com)'bytes = mmInStream.read(buffer); \t \t \t \t \t \t字節[] newbuffer =新的字節[字節];對於(INT I = 0; I <字節;我++) \t \t newbuffer [I] =緩衝液[I]; \t final String data = new String(newbuffer,「US-ASCII」);' – user3126227