相关疑难解决方法(0)

将4个字节转换为int

我正在读这样的二进制文件:

InputStream in = new FileInputStream( file );
byte[] buffer = new byte[1024];
while( ( in.read(buffer ) > -1 ) {

   int a = // ??? 
}
Run Code Online (Sandbox Code Playgroud)

我想做什么来读取最多4个字节并从那些创建一个int值但是,我不知道该怎么做.

我觉得我必须一次抓取4个字节,并执行一个"字节"操作(如>> << >>&FF和类似的东西)来创建新的int

这个成语是什么?

编辑

哎呀,结果有点复杂(解释)

我想要做的是,读取一个文件(可能是ascii,二进制,无所谓)并提取它可能具有的整数.

例如,假设二进制内容(在基数2中):

00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000010
Run Code Online (Sandbox Code Playgroud)

整数表示应该是1,2对吗?: - 前1位为32位,其余32位为2位.

11111111 11111111 11111111 11111111
Run Code Online (Sandbox Code Playgroud)

将是-1

01111111 11111111 11111111 11111111
Run Code Online (Sandbox Code Playgroud)

将会 Integer.MAX_VALUE ( 2147483647 )

java data-conversion

69
推荐指数
5
解决办法
10万
查看次数

Java运算符优先级指南

误解Java运算符优先级是常见问题和微妙错误的来源.我很想知道即使是Java语言规范也说,"建议代码不要严格依赖于这个规范." JLS§15.7宁愿明确聪明,有没有这方面的任何有用的指导?

以下是有关该主题的一些资源:

欢迎增加或更正.

java operators operator-precedence

20
推荐指数
2
解决办法
1万
查看次数

如何使用Google protobuf通过串口进行通信?

我正在开发一个使用RXTXprotobuf与开发板上的应用程序进行通信的项目,而且我遇到了一些问题,这些问题意味着我可能会以错误的方式做事.这是我目前用于向板上写请求的内容(读取代码类似):

public void write(CableCommandRequest request, OutputStream out) {
  CodedOutputStream outStream = CodedOutputStream.newInstance(out);
  request.writeTo(outStreatm);
  outStream.flush();
}
Run Code Online (Sandbox Code Playgroud)

以下是用于准备RXTX串行连接的设置,该连接又支持命令OutputStream使用的设置write:

// The baud rate to use when connecting to the development board
private final static int BAUD_RATE = 115200;
// The timeout to use for the serial port
private final static int CONNECTION_TIMEOUT = 50;
// The serial break for the development board, 100
private final static int SERIAL_BREAK = 100;

// <SNIP> ...

SerialPort serialPort …
Run Code Online (Sandbox Code Playgroud)

java rxtx protocol-buffers

6
推荐指数
1
解决办法
1764
查看次数