1

如标题所示,我正在尝试将字节数组的字符串表示形式转换回原始文件,其中字节所在的位置。

我做了什么:

我有一个获取整个文件并发送它的网络服务:

answer.FileByte = File.ReadAllBytes(@"C:\QRY.txt");

在传输的结果 xml 中序列化后,我有这一行:

<a:FileByte>TVNIfGF8MjAxMzAxMDF8YQ1QSUR8YXxhfGF8YXxhfGF8YXwyMDEzMDEwMXxhfGF8YXxhfGF8YXxhfGF8YXxhfGF8YXxhDVBWMXxhfGF8YXxhfGF8YXxhfGF8YXxhfDIwMTMwMTAxfDIwMTMwMTAxfDB8MHxhDQo=</a:FileByte>

我试图在另一个简单的应用程序中用这一行将它转换回来:

//filepath is the path of the file created
//bytearray is the string from the xml (copypasted)
File.WriteAllBytes(filepath, Encoding.UTF8.GetBytes(bytearray));

我使用 UTF8 作为编码,因为 xml 声明使用这个字符集。保留数据类型不是一种选择,因为我正在编写一个简单的实用程序来检查文件转换。

也许我错过了一些非常基本的东西,但我无法提出一个可行的解决方案。

4

2 回答 2

3

这当然不是 UTF8,序列化程序可能将其转换为 Base64。

用来取回Convert.FromBase64String()你的字节

假设 bytearray 是"TVNIfGF8M..."字符串,请尝试:

string bytearray = ...;
File.WriteAllBytes(filepath, Convert.FromBase64String(bytearray));  
于 2013-09-12T14:13:21.020 回答
1

UTF8 是一种将任意文本转换为字节的方法。
它用于ReadAllText()将磁盘上的字节转换回 XML。

您将看到一种将任意字节转换为适合 XML 的文本的机制。(然后使用 UTF8 将该文本转换为不同的字节)。

可能是 Base64;使用Convert.FromBase64String().

于 2013-09-12T14:12:14.760 回答