将字节转换为单个int Android

时间:2014-03-15 21:58:11

标签: java android bitmap bluetooth

我正在实施一个蓝牙Android应用程序,其中Image从一个设备发送到另一个设备。位图的字节数组在接收端发送并成功重建。但是,我需要将一个整数值与位图一起作为索引发送(因此接收方知道如何处理接收到的位图)。所以基本上我想用字节流发送它:

INT |位图

因为我需要将一个int转移到27,这意味着它适合单个字节,对吧?我目前的代码如下:

ba[0] = Integer.valueOf(drawableNumber).byteValue(); //drawableNumber value is between 1 and 27
 ByteArrayOutputStream bs = new ByteArrayOutputStream();  //create new output stream
 try {
     bs.write(ba);         //bytes of the integer
     bs.write(bitmapdata); //bytes of the bitmap
     bs.toByteArray()      // put everything into byte array
}

 mChatService.write(bs.toByteArray()); // that is where bytes are sent to another device

在接收端:

 case MESSAGE_READ:
    readBuf = (byte[]) msg.obj;  // readBuf contains ALL the received bytes using .read method

所以我的问题是,如何重建整数和我发送的图像(基本上是一个字节到一个整数)?我设法单独重建位图,但我需要这个额外的整数值来知道如何处理接收到的图像。整数值将始终在0到27之间。我检查了所有其他答案,但找不到合适的解决方案..

编辑:主要问题是如何将整数字节与字节数组中的位图字节分开。因为在接收端我想分别重建发送的整数和位图

2 个答案:

答案 0 :(得分:0)

当我在java中尝试这个时,它只是告诉我当我评论时我的想法是什么。整数表示为一个字节(因此在您的情况下,它只是ba [0])。或者它应该基于您的代码。除此之外,这将是一个漫长的过程。这意味着它也是第一个从缓冲区读出的字节(或应该是)。

import java.io.ByteArrayOutputStream;


public class TestClass {
    public static void main(String args[]){
        byte[] ba = new byte[10];
        int myInt = 13;
        ByteArrayOutputStream bs = new ByteArrayOutputStream();  //create new output stream

        try {
           bs.write(myInt);         //bytes of the integer
           ba = bs.toByteArray();      // put everything into byte array
        } finally{};

        for(int i = 0; i < ba.length; i++){
          System.out.println(i);
          System.out.println(ba[i]);
        }
    }
}

我再次意识到这不是一个答案,对评论来说太过分了。

答案 1 :(得分:0)

由于将一个字节转换为一个int是一个向下转换,你可以将该字节分配给一个int变量。

int myInt = ba[0];