如何将int []转换为byte []

Nik*_*lin 57 java arrays type-conversion

我有一个整数数组,表示RGB图像,并希望将其转换为字节数组并将其保存到文件中.

将整数数组转换为Java中的字节数组的最佳方法是什么?

Jon*_*eet 67

正如Brian所说,你需要弄清楚你需要什么样的转换.

你想将它保存为"普通"图像文件(jpg,png等)吗?

如果是这样,您应该使用Java Image I/O API.

如果要以"原始"格式保存,则必须指定写入字节的顺序,然后使用IntBuffer和NIO.

作为使用ByteBuffer/IntBuffer组合的示例:

import java.nio.*;
import java.net.*;

class Test
{   
    public static void main(String [] args)
        throws Exception // Just for simplicity!
    {
        int[] data = { 100, 200, 300, 400 };

        ByteBuffer byteBuffer = ByteBuffer.allocate(data.length * 4);        
        IntBuffer intBuffer = byteBuffer.asIntBuffer();
        intBuffer.put(data);

        byte[] array = byteBuffer.array();

        for (int i=0; i < array.length; i++)
        {
            System.out.println(i + ": " + array[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Pra*_*u R 11

也许使用这种方法

byte[] integersToBytes(int[] values)
{
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   DataOutputStream dos = new DataOutputStream(baos);
   for(int i=0; i < values.length; ++i)
   {
        dos.writeInt(values[i]);
   }

   return baos.toByteArray();
}  
Run Code Online (Sandbox Code Playgroud)