簡體   English   中英

在Android中將數字字符串轉換為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM