C#字节数组问题

时间:2011-05-14 03:09:34

标签: c# string binary

我在博客上发现此代码段为“将二进制数据转换为文字”

Byte[] arrByte = {0,0,0,1,0,1};

string x = Convert.ToBase64String(arrByte);
System: Console.WriteLine(x);

这提供了AAAAAQAB ..

的输出

不清楚的是000101 - >被映射到AAAAAQAB,我是否可以将其用作所有a-z个字符作为二进制等价物以及如何?还是有其他方法吗?

2 个答案:

答案 0 :(得分:5)

实际上00000000 00000000 00000000 00000001 00000000 00000001映射到AAAAAQAB,因为base64每个字母使用6位,所以:

000000 = A (0)
000000 = A
000000 = A
000000 = A
000000 = A
010000 = Q  (16)
000000 = A
000001 = B  (1)

有关详细信息,请参阅this Wikipedia article

答案 1 :(得分:2)

您正在使用的方法ToBase64String如下。 (from wiki

  

Base64是一组类似的编码方案,通过将其转换为基数-64表示,以ASCII字符串格式表示二进制数据。 Base64术语源自特定的MIME内容传输编码。

要将string用作byte[],或使用其他方式Encoding

Encoding.UTF8.GetString(bytes);

所以

72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100

等于

Hello World

字节和字节:

var bytes = Encoding.UTF8.GetBytes("Hello world");
var str   = Encoding.UTF8.GetString(bytes);