本文只做一个记录,方便日后自己查阅,也方便他人查阅提供一个方法,简单、粗暴、上代码。
项目需要,需要用json传输文件,文件需要读取后转换为base64格式字符串,首当其冲百度一下,找到了一篇文章:
https://www.cnblogs.com/Jesse-Cavendish/p/11623240.html
短小文本的确正确,但3K左右的文件,正反转换一下就出错了。具体我也没精力排错,就想使用.net clr来实现不是更简单,的确更简单。
1.项目属性需要修改两处
配置属性->高级->公共语言运行时支持,选择:公共语言运行时支持(/clr)
C/C++ -> 语言 -> 符合模式 -> "否"
2.上代码
using namespace System;
using namespace System::Text::RegularExpressions;
int main(int argc, char * argv[])
{
cli::array<unsigned char>^ data = IO::File::ReadAllBytes("d:\\source.png");
String^ b64 = Convert::ToBase64String(data);
IO::File::WriteAllText("d:\\c_b64.txt", b64);
cli::array<unsigned char>^ raw = Convert::FromBase64String(b64);
IO::File::WriteAllBytes("d:\\new_image.png", raw);
return 0;
}
没什么技巧含量,没什么高深技术,纯粹是因为找了中外好几个c++的base64库,在转换时均出问题,踩坑脱坑过程记录,希望为未来看到的人提供一个解决思路足以。