【发布时间】:2019-08-03 20:32:27
【问题描述】:
首先是一个令人沮丧的事实:https://www.base64decode.org/ 可以做我想做的事。
我正在尝试对由图像处理工具 MVTec Halcon 生成的模型文件 (.shm) 进行编码和解码(到 base64 和从 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 引起的。
感谢您的帮助, 米歇尔
【问题讨论】:
-
这似乎是编码问题。您要保存什么样的数据?
-
他们称之为 .shm 文件。我将其存储为 .txt 文件。
-
@Michel 什么是 .shm 文件?你发布的不是Base64。将您的语言环境的代码页与 Encoding.Default 一起使用也无济于事 - 如果您无法阅读文本,则意味着它不是您的语言。这可能意味着
.shm文件根本不包含文本 -
@Panagiotis Kanavos .shm 文件是由实习生 halcon 序列化方法生成的。我也担心该文件可能根本不包含文本,但问题只是我在(ReadAllText())文件中读取的方式。我不得不像 yekanchi 所说的那样重载方法。现在我能够重用这个模型文件。供您参考: .shm 文件是“模型文件”,仅包含对象的边缘。我将它们用于图像处理。模型文件是要在图像中搜索的模板。
标签: c# .net decode encode halcon