我已经写了一些代码,它存储了一个来自 char 数组 [2304] 的整数
进入一个整数数组,本质上,如果我的字符数组有整数 1000,它存储在 4 个字节
memory_array[0]= 1000 的第一个字节;
memory_array[1] = 1000 的第二个字节;
memory_array[2] = 1000 的第三个字节;
memory_array[3] = 1000 的最后一个字节;
我有一个名为 read_int 的函数,它接受一个索引(存储值的第一个字节)
并返回一个整数,整理所有其他 3 个字节以形成值 1000
现在,我的朋友问我一个问题,
“你必须考虑你使用的字节序系统。如果是小字节序,那么你需要移动每个字节的位置”
我不确定他的意思,我将如何在下面的实现中移动每个字节的位置,以及我如何知道我使用的是什么字节序系统
我的 store int 将一个整数存储到我的 char* 数组中,将它分布在每个字节的 4 个空格中。
void load(unsigned char* instruction){
int rd = get_register_to_store_into(instruction,21,25);
int virtual_rountine_access =
registers[get_register_to_store_into(instruction,13,17)]
+ extract_typeI_imm(instruction);
int value = 0;
registers[rd] = read_int(blob.memory,
virtual_rountine_access);
}
这是我如何从数组中存储和检索的代码
void store_int(unsigned char* arr, int index, int value) {
arr[index] = (value >> 24) & 0xFF;
arr[index+1] = (value >> 16) & 0xFF;
arr[index+2] = (value >> 8) & 0xFF;
arr[index+3] = value & 0xFF;
}
int read_int(const unsigned char* arr, int index) {
int value = 0;
value |= ((int)arr[index]) << 24;
value |= ((int)arr[index+1]) << 16;
value |= ((int)arr[index+2]) << 8;
value |= ((int)arr[index+3]);
return value;
}