Java android中数字字符串到整数的转换
在下面的代码中,当我尝试将msgStr转换为整数时,应用程序强制关闭。谁能告诉我原因吗?是因为msgStr格式不正确吗? 注意:msg是一个obj直通处理程序。msgStr是一个数字字符串 主要活动代码:Java android中数字字符串到整数的转换,java,android,parseint,android-handler,string-conversion,Java,Android,Parseint,Android Handler,String Conversion,在下面的代码中,当我尝试将msgStr转换为整数时,应用程序强制关闭。谁能告诉我原因吗?是因为msgStr格式不正确吗? 注意:msg是一个obj直通处理程序。msgStr是一个数字字符串 主要活动代码: private handleMessage(Message msg){ byte[] byteArr = (byte[])msg.obj; String msgStr = new String(byteArr,"utf-8"); try{ int val = Integer.parseInt(
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);
到
这篇文章可能会对您有所帮助,因为您将字节数组强制转换为字符串,这是行不通的。您需要使用:
当然,UTF-8根据您使用的字符集而有所不同 首先,通过以下代码将字节转换为字符串
String msg = new String(bytes, "UTF-8");
然后将字符串转换为整数,如下所示
int m = Integer.parseInt(msg);
尝试直接将消息转换为字符串:
String msgStr = (String)msg.obj;
如果这不起作用,也不要尝试将其转换为整数,可能是检索到的字符串不是整数
您还可以直接将处理程序消息作为整数发送,而无需转换:
yourhandlername.obtainMessage(what, arg1, arg2, obj).sendToTarget();
arg1:是一个整数
arg2:是一个整数
因此,当收到:
int val = msg.arg1;
请发布logcat exception.cover尝试捕获Integer.parseInt行,然后您知道为什么要强制关闭。
String msgStr = (String)msg.obj;
yourhandlername.obtainMessage(what, arg1, arg2, obj).sendToTarget();
int val = msg.arg1;