我試圖使用大端表示點菜,以大量保存到一個文件:時髦的java按位操作?
[0-255] * 256^N
出於某種原因,當你轉向長期價值,Java的出現使第0級和第4個字節(1和第5 ...)相同
在這短暫的代碼片段的最後一列不應該大於(256 - 1)= 255
我知道Java不有無符號的值,但我不知道這個代碼有什麼問題,或者,我在這裏丟失了什麼
lbrtchx
import java.util.ArrayList;
public class BigEndian02Test{
public static void main(String[] aArgs){
int m8;
long[] lBytL = new long[] { 1L, 256L, 65536L, 16777216L, 4294967296L, 1099511627776L, 281474976710656L, 72057594037927936L };
long[] lBgEnd = new long[8];
for(int i=0; (i < lBytL.length); ++i){
for(long j =-1; (j < 2L); ++j){
lVal = lBytL[i] + j;
System.err.println("// __ lVal: |" + lVal + "|");
for(int m=0; (m < 8); ++m){
m8 = m*8;
lBgEnd[m] = (long)((lVal & 0xFF) << m8);
System.err.println("// __ lBgEnd[" + m + "]: |" + lBgEnd[m] + "|" + (lBgEnd[m]/lBytL[m]) + "|");
}// m
System.err.println("~");
}
}
}
請格式化你的代碼。並嘗試提供[MCVE](http://stackoverflow.com/help/mcve)。另外,如果問題是關於Java的,請刪除其他語言標記。 – Codebender
MCVE的示例:代碼的第一個*半*簡單歸結爲:'long [] lBytL = new long [] {1L,256L,65536L,16777216L,4294967296L,1099511627776L,281474976710656L,72057594037927936L};'自從第一個你的一半代碼與你的問題無關,這就是MCVE中M(Minimal)的本質。 ---至於「格式化你的代碼」,這意味着使用4個空格而不是1個縮進來提高人的可讀性。 – Andreas