我计划每次基本上采用 8 位输入进行 64 位输入。我遇到的问题是,我有一个 64 位寄存器,其中正在写入这 8 位。这 8 位被重叠每次迭代中都在 64 位寄存器中。需要解决这个问题。
int main(){
int Status;i=9;
u64 input=0x0,read_data,input_value=0x0;
print("\r\nEnter 64 bit value:");
while(i--){
input = inbyte();
if (isalpha(input)) {
input = toupper(input);
}
input = atoh(&input);
input_value=input;
}
xil_printf("input = 0x%x\r\n",input_value);
发现存储和读取 64 位值有困难。 任何帮助表示赞赏!
最佳答案
由于您在每个循环中覆盖 input_value
,因此您将丢失之前读取的输入。
您需要进行一些移位和按位或操作。
假设输入是 MSB 在前,只需执行以下操作:
// input_value=input; // Replace this line with the two below
input_value = input_value << 8; // Shift 8 bit right
input_value = input_value | input; // Bitwise or'ing of the new input
关于c++ - C 编程通过每次 8 位输入将 64 位值存储在寄存器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761630/