我有一个csv文件,其中二进制数据与文本内联(即Text,0xFF00)。我需要读入这两个值并将它们保存到数据库中。目前我正在使用StreamReader来读取行并用逗号分隔它。我遇到的问题是我需要将二进制数据转换为它的byte []等价物(即0xFF00转到{255,0})。任何带编码的转换都会改变二进制。
byte[] data= System.Text.Encoding.ASCII.GetBytes(SplitString[1]);
如果整个文件是二进制文件我可以使用File.ReadAllBytes(file)
有没有办法在内存中执行此操作而不将二进制部分写入临时文件?
答案 0 :(得分:0)
我有一个csv文件,其中包含内联文本的二进制数据
这是一个糟糕的开始。你有可能改变它吗?
基本上,您不应该首先尝试将二进制数据作为文本读取。这样做几乎肯定会丢失数据。 (您可以使用ISO-Latin-1,但对于一个讨厌的问题,这是一个棘手的解决方法。)
相反,您可能希望将所有数据读取为二进制数据,并使用Encoding.GetString
仅将其相关位转换为文本。
您如何知道文件中的哪些位是您文件中的内容? (即哪些位是二进制,哪些位是文本)
我遇到的问题是我需要将二进制数据转换为它的byte []等价物(即0xFF00转到{255,0})。
只是为了检查,你的文件确实包含二进制数据,而不是二进制数据的十六进制表示,对吧?如果实际所有文本数据,但其中一些是使用十六进制编码成文本的二进制数据,这将使生活更轻松。