将整数作为 32 位值存储在跨 4 个字节的 char 数组中

问题描述 投票:0回答:0

我有个问题

我这里有这个函数,它将一个跨 4 个字节的整数存储为十六进制字符

    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;
}

现在,我正在研究一个名为 store 的函数,它存储一个跨 32 位的整数,我想要一些确认

这个方法可以吗,

我使用这种方法在索引 0 处输入整数,它存储跨 0,1,2,3 的索引

然后调用 read_int 方法,下面从 0 到 position 读取索引,输入和输出是一样的,但我只是想确保它实际上是以 32 位存储的(不太关心字节顺序)

    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;
}

干杯

c bit-manipulation bit riscv
© www.soinside.com 2019 - 2024. All rights reserved.