2012-07-01 4 views
2

저는 wp7 용 dev-ing 응용 프로그램을 시작했고 C#을 사용하여 ascii로 다시 변환하려고합니다.stringbinary를 ascii로 변환

하지만 어떻게 할 수 있는지 잘 모르겠습니다. 누군가 나를 도와 줄 수 있기를 바랍니다.

예 :

입력 문자열 : 0110100001100101011011000110110001101111

출력 문자열 : 문자열 및 Convert.ToByte 내장을 사용하여 hello

+1

가능한 복제를 참조하십시오 Text.Encoding.UTF8.GetString(Byte[])

사용하여 문자열로 바이트 배열을 변환 할 수 있습니다 : http://stackoverflow.com/questions/6006425/binary-to-corresponding-ascii-string-conversion – Gloopy

답변

3

간단한 솔루션,

는 다음과 같이 수 :

string input = "0110100001100101011011000110110001101111"; 
int charCount = input.Length/8; 
var bytes = from idx in Enumerable.Range(0, charCount) 
      let str = input.Substring(idx*8,8) 
      select Convert.ToByte(str,2); 
string result = Encoding.ASCII.GetString(bytes.ToArray()); 
Console.WriteLine(result); 

또 다른 해결책, 일을 계산 자신을 :

나는이 경우에 당신은 당신을 위해 그것을하지 않고 프레임 워크에서 어떤 방법보다, 계산이 수행되는 방식을 을 알고 싶어 추가 :

string input = "0110100001100101011011000110110001101111"; 
var chars = input.Select((ch,idx) => new { ch, idx}); 
var parts = from x in chars 
      group x by x.idx/8 into g 
      select g.Select(x => x.ch).ToArray(); 

var bytes = parts.Select(BitCharsToByte).ToArray(); 
Console.WriteLine(Encoding.ASCII.GetString(bytes)); 

byte BitCharsToByte(char[] bits) 
{ 
    int result = 0; 
    int m = 1; 
    for(int i = bits.Length - 1 ; i >= 0 ; i--) 
    { 
     result += m * (bits[i] - '0'); 
     m*=2; 
    } 
    return (byte)result; 
} 

상기 해결책은 모두 기본적으로 동일한 것을 수행 : BitCharsToByte 해당 바이트 숯불 []로 변환 않는 경우 첫 번째 그룹 (8)의 그룹 문자; 해당 하위 문자열을 가져와 표시된 비트를 가져와 바이트 값을 계산합니다. 그런 다음 ASCII 인코딩을 사용하여 해당 바이트를 문자열로 변환하십시오.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 위에서 언급 한 방법을 시도했습니다. 그러나 Encoding.ASCII는 wp7에서 지원되지 않으며 매우 오랫동안 나를 찔 렸습니다. – JustStarted

0

당신은 BitArray 클래스를 사용하여 바이트 배열 UR 비트 문자열을 복사하기 위해 CopyTo 기능을 사용할 수 있습니다 그리고

link on BitArray on MSDN

+1

이렇게하면 결과로 나오는'byte []'의 비트 순서를 뒤집을 수 있습니다. 따라서 코드는이를 고려해야합니다. – driis

+0

안녕하세요 Uday0119, 답장을 보내 주셔서 감사합니다. 예! 'Text.Encoding.ASCII.GetString (Byte [])'대신 wp7에서'Text.Encoding.UTF8.GetString (Byte [])'를 사용해야 할 것 같습니다. – JustStarted

+0

아, 그리고 "System.Text.encoding.GetString (byte []) 보호 수준으로 인해 액세스 할 수 없습니다."라는 오류 메시지가 표시되면이 [link] (http : // forums .silverlight.net/t/159871.aspx/1) – JustStarted

관련 문제