我需要将字符串转换为二进制等效项并将其保留在字符串中。然后将其返回到等效的ASCII。
最佳答案
您可以使用Encoding
将字符串编码为字节表示形式,例如UTF-8:
var str = "Out of cheese error";
var bytes = Encoding.UTF8.GetBytes(str);
取回.NET字符串对象:
var strAgain = Encoding.UTF8.GetString(bytes);
// str == strAgain
您似乎希望将表示形式表示为一系列
'1'
和'0'
字符;我不确定为什么要这么做,但这也是可能的:var binStr = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));
编码采用抽象字符串(从某种意义上说,它们是一系列Unicode代码点的不透明表示),并将它们映射为具体的字节序列。字节没有编码就毫无意义(再次,因为它们是不透明的)。但是,通过编码,它们可以变回字符串。
您似乎在将“ ASCII”与字符串混淆了; ASCII只是一种编码,最多只能处理128个代码点。例如,如果您有一个包含
'é'
的字符串,则它没有ASCII表示,因此绝对不能使用一系列ASCII字节来表示,即使它可以在.NET string
对象中和平存在。请参阅this article by Joel Spolsky以获取更多信息。