Java 通过I/O流接收一定数量的字节
我正在创建一个Android应用程序,通过蓝牙将我的设备连接到嵌入式芯片。我在Palm Pilot(用C编写)上已经存在的程序之后对我的设计进行建模。我正在使用蓝牙聊天示例来运行我的代码,但是我被卡住了。我对整个编码世界还是相当陌生的,我有点困惑自己 我想将以下代码从C转换为JavaJava 通过I/O流接收一定数量的字节,java,android,io,bluetooth,palm,Java,Android,Io,Bluetooth,Palm,我正在创建一个Android应用程序,通过蓝牙将我的设备连接到嵌入式芯片。我在Palm Pilot(用C编写)上已经存在的程序之后对我的设计进行建模。我正在使用蓝牙聊天示例来运行我的代码,但是我被卡住了。我对整个编码世界还是相当陌生的,我有点困惑自己 我想将以下代码从C转换为Java SrmReceive(portId,&c,1,(t*5L*Sec)/1000L,&err) 这里唯一真正的问题是,第三个参数。1表示要接收的字节数,如palm文档中所述,类型为UInt32 蓝牙聊
SrmReceive(portId,&c,1,(t*5L*Sec)/1000L,&err)
这里唯一真正的问题是,第三个参数。1
表示要接收的字节数,如palm文档中所述,类型为UInt32
蓝牙聊天示例中的代码具有以下读取数据的功能
public void run() {
Log.i( TAG, "BEGIN mConnectedThread" );
buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while( true ) {
try {
// Read from the InputStream
bytes = mmInStream.read( buffer );
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage( BtHelperHandler.MessageType.READ, bytes, buffer).sendToTarget();
} catch ( IOException e ) {
Log.e( TAG, "disconnected", e );
sendErrorMessage( 1 );
break;
}
}
}
我想将run()
方法更改为具有用于读取特定字节数的参数。我有点不知道该怎么办。我在想
public void run( int size ) {
buffer = new byte[size];
...
}
但我觉得这不对,我觉得我把字节的定义搞混了。听起来可能很愚蠢,但我对这些信息还不够自信。将UInt32
转换为java让我感到困惑,因为java没有等效的类型。如果有人知道,请告诉我。没有理由感到困惑,你所做的是正确的。假设mmInStream是InputStream的一个实例
byte[] buffer = new byte[1024];
int bytes = mmInStream.read(buffer);
将读取最多1024字节的任何可用数据,并返回它读取的字节数。这是数据流的一种低级方法,这很好,它只是意味着您现在必须知道如何处理这个字节数组
如果您经常阅读原语,您可能想看看DataInputStream,像这样使用它
DataInputStream dat = new DataInputStream(mmInStream);
int x = dat.readInt();
将从流中读取32位数据(4字节),并将它们排列成一个Javaint原语。需要注意的事项有,有,以及有/无签名的合并。如果遇到问题,可以使用