2

我在libb64中的 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 文本)文件,然后它会完全跳过 end =。在这种情况下,base64_encode_blockend(code_out,state) 进入 case step_C where state->result = 0。我尝试使用 libb64 函数报告的大小将 b64 数据写入文件,但它错过了结尾或不偏不倚。我不确定。

我已经受够了。我的代码基于结构编码和解码。

还有谁知道是否有用于 base64 编码/解码的 Windows API?我没有使用任何 C++ 标准的东西,这就是我不使用结构的原因。

4

0 回答 0