【发布时间】:2013-11-06 01:50:27
【问题描述】:
搜索会产生许多关于如何将 int 转换为 byte[] 的问题。我有一个带有关键循环的项目,它将长 int [] 写入 FileOutputStream。 FileOutputStream 需要一个 byte[] 来写入。我可以暴力破解不同的方法;我正在寻找一种将 int[] 直接发送到 FileOutputStream 的方法或将 int[] 转换为 byte[] 的最快方法 - 类似于包装缓冲区。我看到了包装 byte[] 以转换为 int[] 和 float[] 的方法......但没有其他方式(从 int[] 到 byte[])。谢谢。
更新:在证明需要之前,仍然希望避免内存映射 I/O 的复杂性(或目前正在试验)。下面的 cmets 促使我考虑创建一个 ByteBuffer,将其包装在一个 IntBuffer 中,将 int 写入 IntBuffer,然后从 ByteBuffer 中提取一个 byte[] 以发送到 FileOutputStream。显而易见的替代方法是直接使用 byte[],这需要我将数据作为字节而不是整数来操作,我可以这样做 - 但与 byte[]/ByteBuffer 相比,它的效率高多少(如果有的话) /IntBuffer 包装方案?
【问题讨论】:
-
为了澄清,这些是字节值 (0-255),它们被存储为整数。您没有
{0, 100, 1000, 100000}的数组并想要打印它们。如果是这样,stackoverflow.com/questions/1086054/… -
更具体地说,我有 int[14] 并且我想以小端顺序将其写入文件,效率很高。提供的链接采用不同的方法(如果这是最好的方法,我可以使用它 - 但需要更多修改),它以 ByteBuffer 开头,(显然)用 IntBuffer 包装它,将数据(一次一个 int)添加到 IntBuffer ,然后提取一个 byte[] - 供我使用,然后将其写入 FileOutputStream。这是一种有效的方法吗?