c++ - C 编程通过每次 8 位输入将 64 位值存储在寄存器中

标签 c++ c embedded

我计划每次基本上采用 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/

相关文章:

python - 使用 SWIG 包装调用另一个对象成员函数的 C++ 类

c - 有一个没有值的 switch 语句 case 标签

objective-c - 如何使用元数据生成 tiff 文件

c++ - FatFS - 无法格式化驱动器,FR_MKFS_ABORTED

c++ - 如何防止 Box2D 中传感器对象上的隧道效应

c++ - 我无法初始化 WCHAR

c++ - 设置 QSurfaceFormat 无效

c - C中带指针的嵌套结构

c - KDS——最终启动顺序错误

c - 如何在 32 位架构中将 64 位 unsigned long long 分配给 32 位结构