c# - 编码和解码奇怪的.shm文件数据到base64 c#
问题描述
首先是一个令人沮丧的事实:https ://www.base64decode.org/可以做我想做的事。
我正在尝试对由图像处理工具 MVTec Halcon 生成的模型文件(.shm)进行编码和解码(与 base64 之间),因为我想将其存储在 xml 文件中。
如果我打开它,它有这种奇怪的形式:
HSTF ÿÿÿÿ¿€ Q¿ÙG®záH?Üä4©±w?Eè}‰@?ð ................
我正在使用这种方法对其进行编码和解码:
public static string Base64Encode(string text)
{
Byte[] textBytes = Encoding.Default.GetBytes(text);
return Convert.ToBase64String(textBytes);
}
public static string Base64Decode(string base64EncodedData)
{
Byte[] base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
return Encoding.Default.GetString(base64EncodedBytes);
}
并像这样从 gui 调用方法:
var model = File.ReadAllText(@"C:\Users\\Desktop\model_region_nut.txt");
var base64 = ImageConverter.Base64Encode(model);
File.WriteAllText(@"C:\Users\\Desktop\base64.txt", base64);
var modelneu = ImageConverter.Base64Decode(File.ReadAllText(@"C:\Users\\Desktop\base64.txt"));
File.WriteAllText(@"C:\Users\\Desktop\modelneu.txt", modelneu);
我对modelneu的结果是:
HSTF ?????? Q??G?z?H???4??w??E?}??@??
所以你可以看到有很多丢失的字符。我猜这个问题是由使用 .Default 引起的。
谢谢你的帮助,米歇尔
解决方案
问题在于读取未指定的文件encoding
,请检查此问题。
如前所述,您可以使用ReadAllText重载 来指定编码,并且对于编写,您必须为WriteAllText指定编码,我建议使用 UTF-8 编码,所以:
var model = File.ReadAllText(@"C:\Users\pichlerm\Desktop\model_region_nut.txt",Encoding.UTF8);
var base64 = ImageConverter.Base64Encode(model);
File.WriteAllText(@"C:\Users\\Desktop\base64.txt", base64,Encoding.UTF8);
var modelneu = ImageConverter.Base64Decode(File.ReadAllText(@"C:\Users\\Desktop\base64.txt"));
File.WriteAllText(@"C:\Users\pichlerm\Desktop\modelneu.txt", modelneu);
推荐阅读
- c++ - 在 ostream 参数上使用 ofstream::open
- wordpress - 如何在 CMS 中修改项目部分的条目标题
- wordpress - 在哪里找到字符串以更改 mb.miniaudioplayer WP 插件中的下载链接图像/文本
- php - php用列表正确替换一个值
- dart - 在 Dart 中,获取 Web 应用程序本地文件字节的最简单方法是什么?
- c++ - std::shared_ptr 复制构造函数线程安全
- jquery - 具有向下滑动效果的置顶标题
- java - JSP 起始页错误:解析模板时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
- reactjs - -bash:react-native:找不到命令 mac
- c# - 如何修复“MediaElement 不包含 CurrentState 的定义”