我需要在Java中将2字节数组(byte[2])转换为整数值。如何实现?
我需要在Java中将2字节数组(byte[2])转换为整数值。如何实现?
ByteBuffer
来实现这个功能:ByteBuffer buffer = ByteBuffer.wrap(myArray);
buffer.order(ByteOrder.LITTLE_ENDIAN); // if you want little-endian
int result = buffer.getShort();
另请参阅将4个字节转换为整数。
ByteBuffer
会正确处理这个问题。也就是说,当且仅当这些字节表示一个负数时,此代码将输出一个负的int
。演示:这里和这里。请记住,只有当最高位(最左边)为1
时,它才是负数。 - Matt Ball+
жҜ”<<
зҡ„дјҳе…Ҳзә§жӣҙй«ҳпјҢжүҖд»Ҙa << 8 + b
дёҺa << (8 + b)
жҳҜзӣёеҗҢзҡ„пјҢиҝҷдёҚжҳҜдҪ жғіиҰҒзҡ„гҖӮжӯӨеӨ–пјҢеңЁJavaдёӯпјҢbyte
жҳҜжңүз¬ҰеҸ·зҡ„пјҢеҰӮжһңдҪҺдҪҚеӯ—иҠӮдёәиҙҹж•°пјҢе°ҶдјҡеҸ‘з”ҹзіҹзі•зҡ„дәӢжғ…гҖӮ - Chris Doddreturn new BigInteger(byte[] yourByteArray).intValue();
在蓝牙命令转换等方面表现良好。不必担心有符号与无符号转换。
每个字节都是在-128..127范围内的整数,因此您需要一种将一对整数映射到单个整数的方法。有许多方法可以做到这一点,具体取决于您在一对字节中编码了什么。最常见的是将16位带符号整数存储为一对字节。将其转换回整数取决于您是否以big-endian形式存储它:
(byte_array[0]<<8) + (byte_array[1] & 0xff)
或小端:
(byte_array[1]<<8) + (byte_array[0] & 0xff)
Ints.fromByteArray(0, 0, myArray[1], myArray[0]);
import java.io.*;
public class ByteArray {
public static void main(String[] args) throws IOException {
File f=new File("c:/users/sample.txt");
byte[]b={1,2,3,4,5};
ByteArrayInputStream is=new ByteArrayInputStream(b);
int i;
while((i=is.read())!=-1) {
System.out.println((int)i);
FileOutputStream f1=new FileOutputStream(f);
FileOutputStream f2=new FileOutputStream(f);
ByteArrayOutputStream b1=new ByteArrayOutputStream();
b1.write(6545);
b1.writeTo(f1);
b1.writeTo(f2);
b1.close();
}