【发布时间】:2015-10-26 17:04:37
【问题描述】:
这里还有其他关于这个主题的问题,其中大部分涉及ByteBuffer和asIntBuffer。但是,我没有看到任何关于在转换为IntBuffer 时如何防止值被截断的解释。
例子:
byte[] plainTextBytes = "Hello World".getBytes();
// Truncates the limit from 11 to 2
IntBuffer intBuffer = ByteBuffer.wrap( plainTextBytes ).asIntBuffer();
// Results in java.lang.UnsupportedOperationException
int[] plainTextInt = intBuffer.array();
我有一个 RC4 加密算法,它采用int[] 类型的明文参数。因此,我需要将明文转换为int[]。 ByteBuffer 和使用 asIntBuffer 的问题是明文被截断,因为限制是独立的(在我的示例中,从 11 变为 2)。
要么我做错了,要么ByteBuffer 不是这里的路。
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
听起来你需要填充。
-
问题是java中的int大小是4bytes。您的字节缓冲区包含 11 个字节。这是一个完整的 2 int(8bytes)。你绝对需要使用字节缓冲区吗?其他解决方案可能对您有用,例如直接将字节数组用作整数。
-
不,一点也不。我不需要使用字节缓冲区。但是 StackOverFlow 上的大多数答案都指向字节缓冲区。我对任何将字节数组转换为 int 数组的解决方案持开放态度。谢谢。
标签: java arrays int bytearray bytebuffer