0

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

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

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

4

1 回答 1

0

我有一个带有文本内联二进制数据的 csv 文件

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

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

相反,您可能希望以二进制形式读取所有数据,并使用Encoding.GetString.

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

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

只是检查一下,您的文件确实包含二进制数据,而不是二进制数据的十六进制表示,对吗?如果它实际上都是文本数据,但其中一些是使用十六进制编码成文本的二进制数据,那会让生活变得更轻松。

于 2012-08-21T19:54:33.443 回答