如果我因爲$a0 = "ABcd1234"
我將如何去製作從十六進制轉換爲二進制
$v0 = 1010 1011 1100 1101 0001 0010 0011 0100
我已經寫了已經是一個程序,它會檢查$ A0值寄存器具有有效的字符,但我難倒試圖將其轉換爲二進制。我只需創建兩個數組,一個用於十六進制值,然後是一個包含每個數字的相應二進制數的數組?如果我這樣做,我將如何去轉換它們,然後將這麼大的值存儲到$ v0
如果我因爲$a0 = "ABcd1234"
我將如何去製作從十六進制轉換爲二進制
$v0 = 1010 1011 1100 1101 0001 0010 0011 0100
我已經寫了已經是一個程序,它會檢查$ A0值寄存器具有有效的字符,但我難倒試圖將其轉換爲二進制。我只需創建兩個數組,一個用於十六進制值,然後是一個包含每個數字的相應二進制數的數組?如果我這樣做,我將如何去轉換它們,然後將這麼大的值存儲到$ v0
正如你已經打破了二進制,很明顯,你知道每個十六進制數字是4位。因此,只需編寫將單個數字轉換爲4位的代碼,並逐個將它們移入目標寄存器。您可以將其組合成檢查代碼,例如:
out=0
foreach(x in string)
{
if (x < '0') goto invalid;
if (x < '9' + 1) { value = x - '0'; goto valid; }
if (x < 'A') goto invalid;
if (x < 'F' + 1) { value = x - 'A' + 10; goto valid; }
if (x < 'a') goto invalid;
if (x < 'f' + 1) { value = x - 'a' + 10; goto valid; }
goto invalid;
valid:
out = (out << 4) | value;
}
是$ a0是十六進制數字的字符串表示嗎? – Dko
.asciiz「ABcd1234」是我在.data部分的代碼 – Michealf