如何将一串字符转换为二进制字符串并再次返回?

Dav*_*d W 2 c# encoding

我需要将一个字符串转换为它的二进制等效值,并将其保存在字符串中.然后将其返回到它的ASCII等价物中.

Cam*_*ron 12

您可以使用Encoding例如UTF-8 将字符串编码为按字节表示:

var str = "Out of cheese error";
var bytes = Encoding.UTF8.GetBytes(str);
Run Code Online (Sandbox Code Playgroud)

要获取.NET字符串对象:

var strAgain = Encoding.UTF8.GetString(bytes);
// str == strAgain
Run Code Online (Sandbox Code Playgroud)

你似乎希望表示为一系列'1''0'字符; 我不确定你为什么这样做,但这也是可能的:

var binStr = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));
Run Code Online (Sandbox Code Playgroud)

编码采用抽象字符串(在某种意义上它们是一系列Unicode代码点的不透明表示),并将它们映射到一系列具体的字节.没有编码,字节是没有意义的(再次,因为它们是不透明的).但是,通过编码,它们可以变回字符串.

你似乎把"ASCII"和字符串混在一起; ASCII只是一种编码,只处理高达128的代码点'é'.例如,如果你有一个包含一个字符串的字符串,它没有ASCII表示,所以大多数肯定不能使用一系列ASCII字节表示,即使它可以在.NET string对象中安静地存在.

请参阅Joel Spolsky撰写的这篇文章以供进一步阅读.