Input 如何将十六进制字符串转换为二进制?
我的问题是从用户处获取64位密钥。为此,我需要得到16个字符作为字符串,其中包含十六进制字符123456789ABCDEF。我从用户那里得到了字符串,我用下面的代码找到了字符。但我不知道如何将字符转换成4位二进制Input 如何将十六进制字符串转换为二进制?,input,hex,mips,data-conversion,spim,Input,Hex,Mips,Data Conversion,Spim,我的问题是从用户处获取64位密钥。为此,我需要得到16个字符作为字符串,其中包含十六进制字符123456789ABCDEF。我从用户那里得到了字符串,我用下面的代码找到了字符。但我不知道如何将字符转换成4位二进制 .data insert_into: .word 8 Ask_Input: .asciiz "Please Enter a Key which size is 16, and use hex characters : " key_array:
.data
insert_into:
.word 8
Ask_Input:
.asciiz "Please Enter a Key which size is 16, and use hex characters : "
key_array:
.space 64
.text
.globl main
main:
la $a0, Ask_Input
li $v0, 4
syscall
la $a0, insert_into
la $a1, 64
li $v0, 8
syscall
la $t0, insert_into
li $t2, 0
li $t3, 0
loop_convert:
lb $t1, ($t0)
addi $t0, $t0, 1
beq $t1, 10, end_convert
# Now charcter is in $t1 but
#I dont know how to convert it to 4 bit binary and storing it
b loop_convert
end_convert:
li $v0, 10 # exit
syscall
看看这个,你会看到9和以下数字的十六进制代码是0x9,大写字母在0x41和0x5A之间,a-Z确定它是一个数字还是一个字符,你会看到是否有一个数字它完全完成了,如果它是一个字符掩码,用0x15获得四位
如果要包含小写字母,请执行与掩蔽相同的步骤,并确定其是否为0x61和0x7A之间的字符。查看一下,您将看到9和以下数字的十六进制代码为0x9,大写字母的十六进制代码为0x41和0x5A a-Z,确定其是否为数字或字符,你可以看到是否有一个数字,如果它是一个字符掩码,用0x15获得四位
如果您想包含小写字母,请执行与屏蔽相同的步骤,并确定它是否是介于0x61和0x7A之间的字符我不认为使用0x15作为@Joelmob的意见进行屏蔽是正确的解决方案,因为
'A' = 0x41 → 0x41 & 0x15 = 0
'B' = 0x42 → 0x42 & 0x15 = 0
'C' = 0x43 → 0x43 & 0x15 = 1
'D' = 0x44 → 0x44 & 0x15 = 4
'E' = 0x45 → 0x45 & 0x15 = 5
'F' = 0x46 → 0x46 & 0x15 = 4
它不会产生任何相关的二进制值
最简单的方法是从字符值中减去范围的下限。我将用C语言给出这个想法,您可以轻松地将其转换为MIPS asm
如果“0”我不认为用0x15作为@Joelmob的观点进行掩蔽是正确的解决方案,因为
'A' = 0x41 → 0x41 & 0x15 = 0
'B' = 0x42 → 0x42 & 0x15 = 0
'C' = 0x43 → 0x43 & 0x15 = 1
'D' = 0x44 → 0x44 & 0x15 = 4
'E' = 0x45 → 0x45 & 0x15 = 5
'F' = 0x46 → 0x46 & 0x15 = 4
它不会产生任何相关的二进制值
最简单的方法是从字符值中减去范围的下限。我将用C语言给出这个想法,您可以轻松地将其转换为MIPS asm
如果“0”