c - 将 unsigned char 数组的内容分成两半

标签 c arrays for-loop type-conversion

我想知道是否有人可以帮助我我只是在学习 c,我正在尝试将 unsigned char 数组的内容分成两半,结果可以存储在两个 unsigned int 中,

出于示例目的,我在下面有一些代码将一个十六进制值添加到 BYTE 数组中,因此如何将 val[] 的内容分成两部分但保持相同的顺序

#include <stdio.h>
typedef unsigned char BYTE;
int main()
{
    // Sample purposes putting hex into val[8]
    int i,j;
    long long hex=0x78661EB54FE76763;
    BYTE val[8];

    for(j=0,i=7; i>=0; i--,j++){
        val[j]= (hex>>(i*8))&0xff;
    }       

    // How to split the contents of val[8] which now holds the hex

    return 0;  
}

我试图将十六进制值拆分为 78661EB5、4FE76763 并将每个值存储在一个无符号整数中,在我的示例中该整数存储在 val[8] 中

最佳答案

你的变量 long long hex 不是“字符数组”,但你可以尝试这样的事情,注意整个过程中的无符号类型。

#include <stdio.h>
#include <stdint.h>

int main(void)
{
    uint64_t hex = 0x78661EB54FE76763;
    uint32_t lo, hi;

    hi = hex >> 32;
    lo = hex & 0xFFFFFFFF;
    printf("%08X %08X\n", hi, lo);
    return 0;
}

程序输出:

78661EB5 4FE76763

关于c - 将 unsigned char 数组的内容分成两半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027258/

相关文章:

c++ - 如何使用基于范围的 for 循环修改 map 中的值?

c - 在 C 中编写语法标记器/解析器的最佳方法是什么?

c - 使用函数填充 C 中的数组

ios - 接受数组的 Swift 函数给出错误 : '@lvalue $T24' is not identical to 'CGFloat'

javascript - 函数内部循环不会将内容附加到父级

java - 在 Java 中编写 WHILE 循环来计算序列中的最大值,从而防止用户输入

c - 使用较旧的 gcc __sync 内置函数进行原子获取/加载和设置/存储

c - C 是否像 Python 一样有可变和不可变变量值的概念?

c - 我第一次使用 poll(),是否需要无限循环?

arrays - Swift:为什么在使用追加时没有元素添加到我的数组中?