4

我有一个大问题,我不知道如何解决它...

我想解码一个很长的 Base64 编码字符串(980.000 个字符),但每次我调试它时,我都会收到这个错误:

错误 C2026:字符串太大,尾随字符被截断

我试过了,但我只能通过这种方法比较 2 个字符串

char* toHash1 = "LONG BASE 64 Code";
char* toHash2 = "LONG BASE 64 Code";

if (true) {
  sprintf_s(output, outputSize, "%s", base64_decode(toHash1 =+ toHash2).c_str());
}

有谁知道我怎样才能让它工作?

4

2 回答 2

4

如此所述,使用 MSVC 时,字符串文字中只能包含大约 2048 个字符。您最多可以通过连接获得 65535 个字符,但由于这仍然太短,因此您不能在此处使用字符串文字。

一种解决方案是将文件中的字符串读取到某个分配的char缓冲区中。我不知道 gcc 和 clang 的任何此类限制,因此尝试使用它们而不是 MSVC 也可以解决这个问题。

于 2015-04-30T13:34:55.580 回答
3

您可以先将字符串转换为十六进制,然后可以像这样包含它,

char data[] = {0xde,0xad,0xbe,0xef};  //example

并且可以像字符串一样使用它,如果需要,可以附加空终止符。

于 2016-08-21T00:46:24.227 回答