将字符串转换为ascii,将ascii转换为字符串

时间:2016-06-27 10:47:05

标签: c#

我将控制台程序的输入作为" Hai My Name是KrishNA"并且该字符串被转换为ascii字符,并且我得到输出为543777096.我想如果我给出与输入相同的数字我希望在同一程序中具有与上面相同的输出,并且对于空间ascii值是32 i我想跳过那个空间。我写了下面的c#程序

string s1;
s1 = Console.ReadLine();

byte[] bytes = Encoding.ASCII.GetBytes(s1);
int result = BitConverter.ToInt32(bytes, 0);
//foreach (int r in bytes)
//{
Console.Write(result);

//}
//byte[] array = new byte[result];


byte[] buffer = System.Text.Encoding.UTF8.GetBytes(s1);

foreach (int a in buffer)
{
    Console.WriteLine(buffer);
}

请帮我这个

3 个答案:

答案 0 :(得分:1)

试试这个

string s1;
s1 = Console.ReadLine();

byte[] bytes = Encoding.ASCII.GetBytes(s1);
int result = BitConverter.ToInt32(bytes, 0);
Console.WriteLine(result);

String decoded = Encoding.ASCII.GetString(bytes);
Console.WriteLine("Decoded string: '{0}'", decoded);

答案 1 :(得分:0)

您无法将字符串转换为单个32位整数,在您的程序中,数字543777096代表“Hai”(包含空格),因此您无法将该数字转换回第一个字符串。使用循环将每个4个字符转换为Int32编号,因此您的字符串应由Int32编号数组表示。

答案 2 :(得分:0)

完全不清楚您使用的int结果是什么。

如果要将数字打印到控制台(或文本文件),请改用字符串。

byte[] bytes = Encoding.ASCII.GetBytes(s1);
string result = bytes.Aggregate("", (acc, b) => (acc.Length == 0 ? "" : acc + ", ") + b.ToString());
Console.WriteLine(result);

// prints 72, 97, 105, 32, 98, 108, 97, 98, 108, 97 for "Hai blabla"

如果您想要留出空格,可以过滤bytes

result = bytes
         .Where(b => b != 32)
         .Aggregate("", (acc, b) => (acc.Length == 0 ? "" : acc + ", ") + b.ToString());

对于较长的输入文本,您应该使用StringBuilder代替。