为什么这个base64解码/编码功能不能正常工作?



我正在使用这里的base64函数来尝试运行一个简单的程序。我想使用以下代码将二进制转换为 base64:

int x = 1;
std::string data = base64_encode(reinterpret_cast<unsigned char *>((void *)&x), 4);
std::string out = base64_decode(data);
int y = reinterpret_cast<int>(out.data());

调用编码函数,并生成此字符串"AQAAAA==" 。根据我的理解,如果解码并转换为字节,这将转换为01 00 00 0(我实际上不明白为什么它是 7 个字节(。当调用解码函数时,我希望01 00 00 00,然后reinterpret_castable回整数 1,但我得到"010000",这不是我所期望的。我尝试增加编码函数的第二个参数,有趣的是,它给了我解码后"01000000"的正确答案。

假设您将此代码用于 base64,我怀疑以下内容将起作用:

int x = 1;
std::string data = base64_encode(reinterpret_cast<unsigned char *>(&x), 4);
std::string out = base64_decode(data);
int y= *(reinterpret_cast<int*>(out.c_str()));

无论在哪一端执行解码逻辑,它都应该在进行此转换之前验证该out.size() == sizeof(int)

相关内容

最新更新