2016-06-27 3 views
1

"Hai My Name is KrishNA"로 콘솔 프로그램에 입력을 제공하고 해당 문자열을 ASCII 문자로 변환하면 출력이 543777096으로 표시됩니다. 내가 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 바이트 ("하이")를 얻고 나머지는 버리고 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은 "하이"(공백 포함)를 나타내므로 해당 숫자를 첫 번째 문자열로 다시 변환 할 수 없습니다. 루프를 사용하여 각 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를 필터링 할 수 있습니다.

관련 문제