从C中的十进制创建十六进制数组

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

因此,我试图将十进制格式转换为大小为8的uint8_t十六进制数组,但是我不确定如何这样做。我的意思的几个例子:

  • Dec:16 => {0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x10}
  • Dec:2587 => {0x00、0x00、0x00、0x00、0x00、0x00、0x0A,0x1B}

有什么建议吗?

c arrays hex decimal
1个回答
0
投票

我认为简单,幼稚的方法是:

int main() {
    int convert = 2587;
    #define OUTSIZE 8
    uint8_t out[OUTSIZE];
    for (int i=OUTSIZE; i>0; i--) {
        out[i-1] = convert%0x100;
        convert >>= 8;
    }

}

但是根据this answer,工会可能更适合您:

union {
    uint64_t num;
    uint8_t byte[8];
} foo;
© www.soinside.com 2019 - 2024. All rights reserved.