如何从具有十六进制二进制数据的 char* 加载流字符串

how to load a streamstring from a char* which has binary data in hexadecimal represetantion?

本文关键字:char 加载 字符串 数据 二进制 十六进制      更新时间:2023-10-16

我通常使用C语言,但现在我正在使用一个库,C++压缩和解压缩数据很有用。然后我将压缩数据保存在字符数组中。就像:

strg[40] = "400000000200000002000200000000ffffff80";

从那里我需要加载一个字符串变量,其中包含由该数组表示的二进制数据。有人可以帮我吗?

Kerrek的评论是正确的。

std::ostringstream ss;
const char *p = strg;
if (p) while (*p) {
    unsigned char x = hex2int(*p) << 4;
    if (*++p) x |= hex2int(*p++);
    ss << x;
}

但这假设输入流的大端表示。如果输入流实际上表示多字节单词,几乎没有端序表示,则必须更改翻译。