2016-06-27 8 views
1

"Hai My Name is KrishNA"というコンソールプログラムへの入力を与えています。その文字列はASCII文字に変換され、543777096として出力されます。私はASCII値iがspace.Iこの文字列をasciiとasciiに変換する

に私を助けてください

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); 
} 

の下には、C#のプログラムを書いたことをスキップしたい32ある同じプログラムで、スペースのために上記と同じ出力をしたい入力と同じ数

+0

文字の最初の4バイト( "Hai")を取得し、残りをドロップして32ビット整数に変換します。あなたは何を期待しましたか? – taffer

答えて

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); 
0

文字列をプログラム内で単一の32ビット整数に変換することはできません。番号543777096は "Hai"(スペースを含む)を表しているため、その番号を最初の文字列に変換することはできません。ループを使用して各4文字をInt32番号に変換します。文字列はInt32番号の配列で表される必要があります。

0

intの結果は何を使用しているのかは完全にはっきりしていません。

数字をコンソール(またはテキストファイル)に印刷する場合は、代わりに文字列を使用します。あなたの代わりにStringBuilderを使用する必要があります長い入力テキストについて

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

:あなたは、スペースを残しておきたい場合は

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を絞り込むことができます。

関連する問題