此处发布了有关此主题的其他问题,其中大多数问题涉及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
不是去这里的方式。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:2)
您好,如果您不需要使用IntBuffer,可以试试这个。
.copyright {
width: 100px;
border: thin solid #F48C13;
}
---------------------
| ----------------- |
| | | |
| | div content | |
| | | |
| ----------------- |
---------------------
| |
|<------------->| -----> A) div width = 100px
| |
| | | |
<-> <-> -----> B) div border size = 1px
\ / (the size you enter is for each side)
border size ("thin" in border size is equal to 1px)
| |
| |
|<----------------->| -----> total/final div width = 102px
B + A + B
1 + 100 + 1 = 102px
or use 98px as width... 1 + 98 + 1 = 100px
您基本上将字节直接转换为整数。
答案 1 :(得分:2)
使用ByteBuffer
并不适合您的需求。文档说
返回支持此缓冲区的字节数组(可选操作)。
<强>抛出:强>
支持
ReadOnlyBufferException - 如果此缓冲区由数组支持但是只读为
UnsupportedOperationException - 如果此缓冲区不由可访问的数组
您在代码中使用了两个缓冲区。第一个是包含数组的#array()
。因此,此缓冲区由数组支持,对#asIntBuffer()
的调用有效。您通过UnsupportedOperationException
创建的第二个。此缓冲区只是第一个缓冲区的视图,不由数组支持。因此,您在调用array()
时会看到byte[]
。
您想加密int[]
,但您的算法适用于{{1}}。然后Jawad回答你的路。