[英]Conversion of numeric string to integer in android
在以下代碼中,當我嘗試將msgStr轉換為整數時,應用程序強制關閉。 誰能告訴我原因? 是否因為msgStr格式不正確? 注意:msg是通過處理程序獲取的obj。 msgStr是一個數字字符串。
MainActivity代碼:
private handleMessage(Message msg){
byte[] byteArr = (byte[])msg.obj;
String msgStr = new String(byteArr,"utf-8");
try{
int val = Integer.parseInt(msgStr);
}catch(Exception e){
e.printStackTrace;
}
藍牙連接線程:
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[1024]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
break;
}
}
}
現在誰能說出問題所在? 另外,如果mmInStream由數字數據組成,那么如何在字節數組緩沖區中將2位數據與3位數據區分開並存儲呢?
嘗試
String msgString = new String(...);
改變這個
String msgStr = String(byteArr);
至
String msgStr = new String(byteArr);
這篇文章可能會幫助您如何在Java中將Byte []數組轉換為字符串
String s = new String(byteArr);
System.out.println("Output : " + s);
這是因為您正在將字節數組轉換為字符串,但這是行不通的。 您需要使用以下構造函數 :
String msgStr = new String(byteArr, "UTF-8");
當然,UTF-8會根據您使用的字符集而有所不同。
首先通過以下代碼將Byte轉換為String。
String msg = new String(bytes, "UTF-8");
然后將您的字符串轉換為整數,如下所示。
int m = Integer.parseInt(msg);
嘗試將消息直接轉換為String:
String msgStr = (String)msg.obj;
如果這不起作用,也請嘗試不要將其轉換為Integer
,則可能是檢索到的String
不是整數。
另外,您可以直接將Handler消息作為整數發送,而不必進行轉換:
yourhandlername.obtainMessage(what, arg1, arg2, obj).sendToTarget();
arg1 :是整數
arg2 :是整數
因此,當收到:
int val = msg.arg1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.