【问题标题】:Reading binary bytes from string从字符串中读取二进制字节
【发布时间】:2012-08-21 19:50:40
【问题描述】:

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

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

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

【问题讨论】:

  • 你能发布一个示例字符串来解析吗?

标签: .net binary-data


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 它实际上是二进制的,我只是写了十六进制,这样更容易理解我的转换意思。我想我会尝试另一条路线,并使用 BCP.exe 和格式文件执行此操作。感谢您的帮助。
猜你喜欢
  • 2021-11-09
  • 2014-06-18
  • 2012-09-05
  • 2012-06-24
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
相关资源
最近更新 更多