//...
public enum InstructionSet {
//...
INSTRUCTION_HALT((byte) 0xF0, (ticksSinceStart) -> {
return halt(ticksSinceStart);
});
private final byte opCode;
private MicroOperationPlan plan;
private InstructionSet(byte opCode, MicroOperationPlan opPlan) {
this.opCode = opCode;
this.plan = opPlan;
}
//...
public byte getOpByte() {
return this.opCode;
}
}
現在,我在我的主要方法的調試輸出,每一個枚舉常量有一個字節的接口(通過拉姆達)的一個對象的枚舉。在我的主要方法中沒有更多的代碼被執行。字節'opCode'在我的枚舉中是最終的,所以它不能被改變。 調試指令:
public static void main(String[] args) {
System.out.println(Integer.toHexString(InstructionSet.INSTRUCTION_HALT.getOpByte()));
//...
}
我覺得應該打印到終端:F0
什麼是印刷到終端:FFFFFFF0
如果我不將它轉換爲十六進制的字符串,它仍將-16打印到終端中,與fffffff0相當的小數是多少。
發生了什麼事?
您正在將整數轉換爲十六進制字符串,但您從字節開始。它將字節0xF0擴展爲0xFFF0(或0xFFFFFFF0)的整數。嘗試使用十六進制的BYTE轉換。 – Grantly
它看起來像'java.lang.Byte'沒有任何非十進制基數的字符串轉換方法。 – afk5min