0
所以,我有我的模擬器此代碼的字節轉換爲十六進制爲什麼我的模擬器中按位操作返回0?
byteToHex(opcode) {
var tempCode = (opcode).toString(16).toUpperCase()
var addln = 4 - tempCode.length
var pad =""
for(var i = 0; i< addln; i++) {
pad = pad + "0"
}
var newCode = "0x"+ pad + tempCode
return newCode;
}
,我有這個代碼,執行按位運算得到一個操作碼,然後將其轉換使用。
this.opcode = (this.memory[this.pc] << 8) | this.memory[this.pc + 1]
console.log(this.memory)
console.log("before conversion", this.opcode)
this.opcode = this.byteToHex(this.opcode)
console.log(this.opcode)
//this just returns the first 'letter' of the opcode
switch (this.opcode & 0xF000)...
這是控制檯輸出
Array [ 240, 144, 144, 144, 240, 32, 96, 32, 32, 112, 70 more… ]
before conversion 0
0x0000
這意味着我得到了正確的操作碼,但我不知道如何解決它。 爲了更好地瞭解該項目:Github
你的代碼工作...當我在stackoverflow上運行它。它雖然不適用於我... – Blaze349
太棒了,這是一個很好的第一步。現在看來,你必須將「對我不起作用」擴展成有用的東西,並且能夠解決。你在控制檯遇到了什麼錯誤,你期望結果如何,結果你實際得到了什麼? – enhzflep
謝謝你的迴應。在每個週期更改爲按位結果之前,我的操作碼設置爲0。這幾乎就像函數沒有給操作碼提供任何值。雖然沒有js錯誤。結果我仍然得到0和0x0000。 – Blaze349