解码数组(unit8_t数组到char数组)

时间:2015-05-09 17:44:07

标签: c++ arrays decoding bluez

我有一个加密缓冲区的文本表示(通过gcrypt),如下所示:

(enc-val 
 (ecdh 
  (s #04FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F1636#)
  (e #0411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F292256D#)
  )
 )

然后我通过函数 data_from_string 将此文本字符串转换为( uint_8 )值数组。功能如下:

size_t data_from_string(const char *str, uint8_t **data)
    {
        char tmp[3];
        size_t size, i;

        info("data_from_string");

        size = strlen(str) / 2;
        *data = (uint8_t *)malloc(size);
        if (*data == NULL)
            return 0;

        tmp[2] = '\0';
        for (i = 0; i < size; i++) {
            memcpy(tmp, str + (i * 2), 2);
            (*data)[i] = (uint8_t) strtol(tmp, NULL, 16);
        }

        return size;
    }

data_from_string 函数是Bluez用来编码字符串并将其发送到连接的设备。它确实生成一个编码( uinit_8 )值数组,如下所示:

  

0000000A0000EC0D0000000004FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F16360000000E00411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F2922560D00000000

我一直在寻找将编码( uinit_8 )值数组恢复为原始文本表示的方法。

有没有人知道如何执行此任务?

0 个答案:

没有答案