我正在寻找一种返回数组片段的Java方法.一个例子是获取包含字节数组的第4和第5个字节的字节数组.我不想在堆内存中创建一个新的字节数组来做到这一点.现在我有以下代码:
doSomethingWithTwoBytes(byte[] twoByteArray);
void someMethod(byte[] bigArray)
{
byte[] x = {bigArray[4], bigArray[5]};
doSomethingWithTwoBytes(x);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以做到doSomething(bigArray.getSubArray(4, 2))4是偏移量,2是长度,例如.
我对这两个功能有些困难:byteArrayToInt和intToByteArray.
问题是,如果我使用一个来到另一个并且结果到达前者,结果会有所不同,您可以从下面的示例中看到.
我找不到代码中的错误.任何想法都非常受欢迎.谢谢.
public static void main(String[] args)
{
int a = 123;
byte[] aBytes = intToByteArray(a);
int a2 = byteArrayToInt(aBytes);
System.out.println(a); // prints '123'
System.out.println(aBytes); // prints '[B@459189e1'
System.out.println(a2); // prints '2063597568
System.out.println(intToByteArray(a2)); // prints '[B@459189e1'
}
public static int byteArrayToInt(byte[] b)
{
int value = 0;
for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8;
value += (b[i] & 0x000000FF) << shift;
} …Run Code Online (Sandbox Code Playgroud) Java在其虚拟机中使用了什么字节顺序?我记得在哪里读取它取决于它运行的物理机器,然后我读到的其他地方,我相信它始终是大端.哪个是对的?
我在这里使用代码通过套接字发送单个文件.但是,我需要能够通过套接字发送多个文件(基本上是目录中的所有文件),并让客户端识别文件之间的分离方式.坦率地说,我完全不知所措.任何提示都会有所帮助.
注1:我需要一种方法来在一个连续的流中发送文件,客户端可以将这些文件分离成单个文件.它不能依赖客户的个别请求.
注2:要回答一个问题,我很确定我会在评论中写到,不,这不是作业.
编辑它有人建议我可以在文件本身之前发送文件的大小.我怎么能这样做,因为通过套接字发送文件总是以预定的字节数组或单独的单个字节完成,而不是由返回的long返回File.length()
我想md5一个Array[Long],所以我想这样做是Array[Byte]因为MD5功能需要一个Array[Byte],我怎么能这样做?
我为此使用了messagedigest.
我有一个long.我知道这long不是很大.实际上,它可以编码为7个字节的无符号整数.
我想我写long到byte[7]使用ByteBuffer和小端.
这个
long myLong = ... //some value
byte[] myLongBytes = ByteBuffer.allocate(7).order(ByteOrder.LITTLE_ENDIAN).putLong(myLong).array();
Run Code Online (Sandbox Code Playgroud)
IndexOutOfBoundsException当然是投掷.我甚至可以这样做ByteBuffer吗?我应该以不同的方式做吗?