将存储在字符串中的字节数组转换为字节数组

时间:2014-06-27 18:51:54

标签: c# visual-studio-2010 c#-4.0 visual-studio-2012 bytearray

我正在传递一个表示pdf作为xml节点一部分的字节数组。

xml中的字节数组int看起来像这样

<Document>
Xh0XQo+PgovVHlwZSAvDAwIG4gCjAwMDAxNTc0MjkgMDAwMDAgbiAKMDAwMDE1ODQ1NSAwMDAwMCBuIAowMDAwMTU5MzY1IDAwMDAwIG4gCjAwMDAxNTk2MjEgMDATg5MyAwMDAwMCBuIAowMDAwMTYwMTQzIDAwMDAwIG4gCjAwMMDE2MDYzNSAwMDAwMCBuIAowMDAwMTYwODk5IDAwMDAwIG4gCjAwMDAxNNTkgMDAwMDAgbiAwMDE2NDkxMiAwMDAwMCBuIAowMDAwMTY1MTwMDAwIG4gCjAwMDAxNjU0MzYgMDAwMDE2NTUyMyAwMDAwMCBuIAowMDAwMTY1NzA5IDAwMDAwIG4gCjAwMDAxNjU5MjcgMDAwMDAgbiAKMDA4MTg3OSAwMDAwMCBuIAowMMTgxOTc4IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAxMTMxCi9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDgyMTQwQURDM0QwOTRCREZBODI2MjM4Q0VBM0YxODA3PiA8ODIxNDBBREMzRDA5NEJERkE4MjYyMzhDRUEzRjE4MDc+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMTgyMDEzCiUlRU9GCg...........</Document>

所以我先将bytearray复制到字符串变量中。

 string pdfbyte = GetNodeUsingXpath(xpath.....);

现在我想把这个pdfbyte转换成一个字节数组。

 byte[] output = (byte[])pdfbyte;
 byte[]  output = byte.parse(pdfbyte);

这些都行不通。

我已经在网上查了但是找不到一个简单的解决方案来将存储在字符串变量中的字节数组转换为字节数组。任何指针都会有所帮助。

基本上,我想将作为xml的一部分发送的bytearray复制到 字节数组变量。

1 个答案:

答案 0 :(得分:4)

如果你在XML文档中有二进制数据,我希望希望它是base64-encoded。文本数据和二进制数据不同,您不应该尝试直接在字符串中存储任意二进制数据。

如果是,您可以使用:

string base64 = GetNodeUsingXpath(xpath.....); 
byte[] output = Convert.FromBase64String(base64);

您可能会发现需要首先修剪字符串:

byte[] output = Convert.FromBase64String(base64.Trim());

如果它不是 base64,您需要仔细查看文本的外观。它可能是十六进制的,尽管这并不十分可能。如果某人刚开始使用Encoding.GetString(bytes),则需要修复该代码,并且几乎可以保证丢失数据。

编辑:既然我们可以看到一些数据,它确实看起来像它的base64。