在十六进制字符数组中添加变量

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

所以我目前正在开发项目,我需要制作一个十六进制数组,稍后通过串行发送。这个十六进制数组有一些固定部分,例如它总是以 F0 开头,但在中间我需要有可变数据。向此十六进制数组添加变量的最简单方法是什么?

这是我想要做的一个粗略示例:

F0 (2 byte long variable) (1 byte variable) (4 byte long variable) 0F

示例:

F0 00 01 FF 00 00 00 01 0F

所以理想情况下,这是我正在寻找的东西:

unsigned char data[] = {0xF0,Data1,Data2,Data3,0x0F};

arrays c char hex
1个回答
0
投票

您可以使用

memcpy()
函数复制变量中的数据。

#include <stdio.h> /* printf */
#include <string.h> /* memcpy */
#include <stdint.h> /* uint8_t, uint16_t, uint32_t */

int main(void) {
    /* prepare data */
    /* assuming little endian */
    uint16_t Data1 = UINT16_C(0x0100);
    uint8_t Data2 = UINT8_C(0xff);
    uint32_t Data3 = UINT32_C(0x01000000);

    /* copy data */
    unsigned char data[1 + 2 + 1 + 4 + 1];
    data[0] = 0xf0;
    memcpy(data + 1, &Data1, 2);
    memcpy(data + 3, &Data2, 1);
    memcpy(data + 4, &Data3, 4);
    data[8] = 0x0f;

    /* check data */
    for (int i = 0; i < 9; i++) {
        printf("%02X ", data[i]);
    }
    putchar('\n');

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.