我有一个大问题,我不知道如何解决它......
我想解码一个很长的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());
}
任何人都知道如何让它发挥作用?
答案 0 :(得分:3)
如文档here所述,使用MSVC时,字符串文字中只能包含大约2048个字符。您可以通过连接获得最多65535个字符,但由于这仍然太短,因此您无法在此处使用字符串文字。
一种解决方案是将文件中的字符串读入一些已分配的char
缓冲区。我不知道gcc和clang有这样的限制,所以尝试使用它们代替MSVC也可以解决这个问题。
答案 1 :(得分:1)
您可以先将字符串转换为十六进制,然后像这样包含它,
char data[] = {0xde,0xad,0xbe,0xef}; //example
并且可以像字符串一样使用它,如果需要,可以附加null终止符。