Winapi libb64 C例程的正确使用

Winapi libb64 C例程的正确使用,winapi,base64,Winapi,Base64,我在中的C例程遇到问题,以下是我的代码: base64_encodestate state; int outBufLen = 2 * nInBuf; *outBuf = new char[outBufLen]; base64_init_encodestate(&state); int r1 = base64_encode_block(inBuf, nInBuf, *outBuf, &state); int r2 = base64_encode_b

我在中的C例程遇到问题,以下是我的代码:

    base64_encodestate state;
    int outBufLen = 2 * nInBuf;
    *outBuf = new char[outBufLen];

    base64_init_encodestate(&state);
    int r1 = base64_encode_block(inBuf, nInBuf, *outBuf, &state);
    int r2 = base64_encode_blockend(*outBuf, &state);
    base64_init_encodestate(&state);
这会将=放在开头,而不是结尾

所以我试了一下:

    base64_encodestate state;
    int outBufLen = 2 * nInBuf;
    *outBuf = new char[outBufLen];

    base64_init_encodestate(&state);
    int r1 = base64_encode_block(inBuf, nInBuf, *outBuf, &state);
    int r2 = base64_encode_blockend(*outBuf+ r1, &state);
    base64_init_encodestate(&state);
这是可行的,但不适用于“大”(~800KB文本)文件,然后它会完全跳过结尾。在这种情况下,base64_encode_blockend(code_out,state)进入案例步骤C,其中state->result=0。我尝试使用libb64函数报告的大小将b64数据写入一个文件,但它没有结束或不公平。我不确定

我受够了。我的代码基于struct编码和解码


还有人知道base64编码/解码是否有Windows API吗?我不使用任何C++标准的东西,这就是为什么我不使用Struts。

你的最后一组代码看起来非常好。是什么让你认为它“错过了结局”或“不偏不倚”?(您是否确保写出
r1+r2
字节?您是否意识到并非所有base64编码的数据都以
=
结尾?)在IDE和IXMLDOMDocument的get_xml中查看数据的限制组合在一起,这让我很失望。您的最后一段代码看起来非常好。是什么让你认为它“错过了结局”或“不偏不倚”?(您是否确保写出
r1+r2
字节?您是否意识到并非所有base64编码的数据都以
=
结尾?)结果是IDE中查看数据的限制和IXMLDOMDocument的get_xml组合让我感到不舒服。