从字符串读取二进制字节

时间:2012-08-21 19:50:41

标签: .net binary-data

我有一个csv文件,其中二进制数据与文本内联(即Text,0xFF00)。我需要读入这两个值并将它们保存到数据库中。目前我正在使用StreamReader来读取行并用逗号分隔它。我遇到的问题是我需要将二进制数据转换为它的byte []等价物(即0xFF00转到{255,0})。任何带编码的转换都会改变二进制。

byte[] data= System.Text.Encoding.ASCII.GetBytes(SplitString[1]);

如果整个文件是二进制文件我可以使用File.ReadAllBytes(file)有没有办法在内存中执行此操作而不将二进制部分写入临时文件?

1 个答案:

答案 0 :(得分:0)

  

我有一个csv文件,其中包含内联文本的二进制数据

这是一个糟糕的开始。你有可能改变它吗?

基本上,您不应该首先尝试将二进制数据作为文本读取。这样做几乎肯定会丢失数据。 (您可以使用ISO-Latin-1,但对于一个讨厌的问题,这是一个棘手的解决方法。)

相反,您可能希望将所有数据读取为二进制数据,并使用Encoding.GetString仅将其相关位转换为文本。

您如何知道文件中的哪些位是您文件中的内容? (即哪些位是二进制,哪些位是文本)

  

我遇到的问题是我需要将二进制数据转换为它的byte []等价物(即0xFF00转到{255,0})。

只是为了检查,你的文件确实包含二进制数据,而不是二进制数据的十六进制表示,对吧?如果实际所有文本数据,但其中一些是使用十六进制编码成文本的二进制数据,这将使生活更轻松。