使用c#将二进制数据字符串存储到字节数组中

本文关键字:存储 到字节 数组 字符串 数据 二进制 使用 | 更新日期: 2023-09-27 17:55:04

我有一个web服务,它返回二进制数据作为字符串。使用c#代码如何将其存储在字节数组中?这条路对吗?

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(inputString);

实际上,这不起作用。让我再解释一下:web服务代码使用utf8编码将字符串(包含XSLFO数据)转换为字节数组。在我的web服务响应中,我只看到"PGZvOnJvb3QgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgeG1sbnM­6eGY9Imh0dHA6Ly93d3cuZWNyaW9uLmNvbS94Zi8xLjAiIHhtbG5zOm1zeHNsPSJ1c=="之类的数据。实际上,我希望拥有在服务中转换为byte[]的原始字符串值。不确定是否可能?

使用c#将二进制数据字符串存储到字节数组中

不,这是个坏主意。

除非输入数据原来是文本,否则尝试使用Encoding是一个坏主意。web服务应该使用base64之类的东西来编码它-此时您可以使用Convert.FromBase64String来获取原始二进制数据。

基本上,将任意二进制数据视为编码文本是一种快速丢失数据的方法。当您需要在字符串中表示二进制数据时,您应该使用base64,十六进制或类似的东西。

这可能意味着您也需要更改web服务,当然—如果它通过简单地将二进制数据处理为utf -8编码的文本来创建字符串,那么从。

开始就是坏的。

如果字符串以UTF8编码编码,那么是的,这是正确的方式。如果是Unicode,则非常相似:

System.Text.Unicode encoding = new System.Text.Unicode();
byte[] bytes = encoding.GetBytes(inputString);

Base64Encoding有一点不同:

byte[] bytes = Convert.FromBase64String(inputString);