c#将二进制数据读入字符串

时间:2011-05-07 16:44:03

标签: c# string binary byte

我已经看到了很多关于如何将字节数组转换为字符串的例子,但是当我开始使用加密时,这会给我带来许多问题。出于好奇,有没有人知道将二进制数据直接读到字符串的方法。

执行此操作的VB6方法是:

Dim S as string
s = space$(lof(1))
Get #1,, s
close #1

如果没有,我已经看到了将字符串转换为字节数组的不同方法,返回到字符串,包括base64,UTF8,最后 - 通过char通过char并将其转换为字节。

我的目标很简单。我想将二进制数据检索到字符串,加密此字符串,最后将所有字符串数据写回新的二进制文件。

您认为哪种方法是最快的方法?

2 个答案:

答案 0 :(得分:3)

如果您只是想加密二进制数据,那么您应该完全避免使用字符串。如果您正在加密属于字符串的文本信息,那么您应该关心编码(UTF-8和朋友) - 尽管读取数据,将其放入字符串,加密字符串然后写出数据似乎是一个奇怪的要求。

答案 1 :(得分:1)

您声明要从byte[]转到stringbyte[];首先,请注意Encoding(例如UTF-8) 是一个选项;仅在将字符串转换为二进制字符串时才适用。差异很重要:它实际上需要文本数据才能发挥作用,并且任意byte[] 不能被视为文本数据。这也排除了你的“直接写入字符串”,原因类似(不限于:代理等)。

将二进制编码为字符串的正确方法是base-64,base-16等; base-64是这里最有效的通用编码。

然而;大多数加密代码适用于二进制,而不是文本。如果您有文本加密API,在大多数情况下,首先要做的是使用UTF-8等编码将其转换为二进制文件。

所以:检查一下你没有错过直接二进制API选项。