C++ 隐蔽压缩十六进制字符串(基64编码)
我有一个base64编码的()字符串,如下所示: 2.在12年的工作中,他们的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的新的新的工作是在一个新的新的工作是在一个新的新的工作中,新的工作——他们的工作是在一个新的工作上,新的新的新的新的工作——他们的工作是在新的新的工作中,新的工作是在新的新的工作上,新的一一一个新的工作上,新的新的工作上,他们他们他们的工作是在新的一一一个新的工作上,他们他们他们的一一一一个新的工作——他们的工作——他们的工作——ZQZI4RDc5nky5njc4qtu4qzrdmzvdmkjdrueymejeqzyzrucqjkqogickkaa== 以下Bluez函数用于压缩此Base 64编码字符串,以将其发送到可扩展设备:C++ 隐蔽压缩十六进制字符串(基64编码),c++,c,string,encoding,C++,C,String,Encoding,我有一个base64编码的()字符串,如下所示: 2.在12年的工作中,他们的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的工作是在一个新的工作中,一个新的新的新的工作是在一个新的新的工作是在一个新的新的工作中,新的工作——他们的工作是在一个新的工作上,新的新的新的新的工作——他们的工作是在新的新的工作中,新的工作是在新的新的工作上,新的一一一个新的工
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;
}
size\u t data\u from\u string(const char*str,uint8\u t**data)
{
char-tmp[3];
大小\u t大小,i;
信息(“来自字符串的数据”);
尺寸=strlen(str)/2;
*数据=(uint8_t*)malloc(大小);
如果(*数据==NULL)
返回0;
tmp[2]='\0';
对于(i=0;i
data_from_string函数将Base 64编码字符串压缩为以下格式:
0000001200000C0A0000AC0A000A0C0A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C00000000000000000000000000000000A4000000000000000000000000000000000000000000000000000000000000C0A0000A000C100C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0000000000000E00E3000000E20000000D000E0000000000C20000000000000000000E000000000000AA00
我想在收到此缓冲区后将此字符串转换回Base 64编码的字符串格式。我已经尝试了一些C++()BiasCi::A2ByHEX函数来重新转换缓冲区,但没有效果。
有人知道如何实现这一目标吗?您的data\u from\u string函数将由十六进制表示形式(例如“FF12…”)组成的字符串转换为字节数组,并且不适用于base64字符串这样的一般文本,它只会损坏数据,无法恢复。我同意@j.holetzeck,这个函数甚至还没有接近做正确的事情。Base64应该包含4个字符,每个字符包含6位数据,总计24位,并将其解压为3个字节。因此,通过将输入大小的1/2(而不是3/4)设置为
size
1/2,您就搞糟了。我一直在使用字符串中的函数数据,因为它是Bluez库的一部分。我需要对我的数据进行编码。我现在看到base64编码是错误的方法。是否有更合适的编码,如UTF-8?如有任何建议,将不胜感激。您想将数据从哪个程序/平台发送到哪个程序/平台?也许你需要UTF-8或者你需要Base64你的传输层到底期望什么?例如,您一侧有一些数据(例如文本或二进制),您希望传输到另一侧。在这两者之间,您需要传输协议所期望的编码。它是什么(base64、二进制、xml、其他格式等)?