得到某些字節所以我有一個方法,採取整數n
,和兩個長x
和y
。它應該從x
返回第一個n
字節,其餘的從y
返回。看起來很簡單,但我是新的直接與字節工作,並不能讓這種方法工作。爪哇從長
public static long nBytesFromXRestY(int n, long x, long y) {
int yl = longToBytes(y).length;
byte[] xx = new byte[yl];
byte[] xa = longToBytes(x);
byte[] yb = longToBytes(y);
for (int i=0;i<xx.length;i++) {
if (i < n) {
System.out.println("i < n");
xx[i] = xa[i];
} else {
xx[i] = yb[i];
}
}
System.out.println(Arrays.toString(xx));
return bytesToLong(xx);
}
如果我喂的是方法n = 3
,x = 45602345
和y = 10299207
,它應該返回45699207
(右..?),但它會返回10299207
..
它打印"i < n"
三次,所以我知道for和if/else正在工作。但由於某種原因,它仍然只返回yb
陣列。對不起,如果這是一個愚蠢的問題。對我來說新概念。
編輯:longToBytes
和bytesToLong
方法:
public static long bytesToLong(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.put(bytes, 0, bytes.length);
buffer.flip();//need flip
return buffer.getLong();
}
public static byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(0, x);
return buffer.array();
}
你似乎混淆了字節與數字。在你想要的輸出中,你需要'x'的前3位數字,其次是'y'的其餘部分。 – Tunaki
好的,我有一種感覺就是這樣。那麼,如果我給它提供相同的數字並且它使用前3個字節而不是數字,那麼該方法將返回什麼呢? – isaac6
您的結果正是如此。打印'longToBytes(45602345)'和'longToBytes(10299207)',你會發現第一個3都是0. – Tunaki