2011-05-04 7 views
3

Byte[]을 이진수 시퀀스가 ​​들어있는 string으로 변환해야합니다. 문자로 바이트를 인코딩하기 때문에 Encoding을 사용할 수 없습니다! ..바이트 []를 바이너리로 문자열 표현으로 변환

"1111111000000001" 
+2

"0110010010100100"과 같은 문자열을 원한다고 말하고 있습니까? –

+0

예! thats 정확히 내가 이미'바이트 []'에 그것을 필요가 – Sudantha

+0

당신은 "그대로"문자열로 변환 바이트가 필요 한가? – Gabriel

답변

10

Convert.ToString의 문자열로 숫자 정수를 이진 표현으로 변환 할 수 있습니다. 배열의 각 byte이 작업을 수행하고 그 결과을 연결하는 LINQ와 매우 간단합니다 :

var input = new byte[] { 254 }; // put as many bytes as you want in here 
var result = string.Concat(input.Select(b => Convert.ToString(b, 2))); 

업데이트 : 위의 코드는 입력 바이트 당 정확히 8 문자를 갖는 결과를 생성하지 않습니다

하고, 이렇게하면 입력 결과가 무엇인지 알 수 없게됩니다. ""
이 경우

var result = string.Concat(input.Select(b => Convert.ToString(b, 2).PadLeft(8, '0'))); 
+0

안녕하세요 john이 작품은 나를 위해 일한다고 생각합니다 ... 나는 결과의 길이를 계산할 수있었습니다 ...하지만'textbox' 형식으로 가져 가려고 docent로드 ... 어떤 생각? :) – Sudantha

+0

고마워요 존 ... 나는 'richTextBox'로 가져갈 수있었습니다 .. 도와 주셔서 많은 도움을 청합니다. – Sudantha

3
string StringIWant = BitConverter.ToString(byteData); 

하지만 Encoding 직장 제안

string System.Text.Encoding.UTF8.GetString(byte[]) 

편집 :이 출력 할

new byte[] { 254, 1 }; 

예 :

이 어레이를 갖는 : 다음과 같이 10101011010

@Quintin Robinson의 답변에서;

StringBuilder sb = new StringBuilder(); 
foreach (byte b in myByteArray) 
    sb.Append(b.ToString("X2")); 

string hexString = sb.ToString(); 
+0

일종의'FF-FF-'..... 나는'hexa'라고 생각합니다. 이제'10101010' 바이너리로 변환 하시겠습니까? – Sudantha

+0

업데이트 된 답변을보십시오. –

+0

도움을 주셔서 감사합니다 소 네르 – Sudantha

1
byte[] bList = { 0, 1, 2, 3, 4, 5 }; 
string s1 = BitConverter.ToString(bList); 
string s2 = ""; 
foreach (byte b in bList) 
{ 
    s2 += b.ToString(); 
} 

S1 = "01-02-03-04-05"
과 S2 = 바이트 당 정확히 8 문자를 얻으려면 작은 변화가 필요하다 나는 당신이 성취하려고하는 것을 실제로 얻지 못합니다.

+1

개인적으로 그가 성취하고자하는 것을 이해했습니다. 내가 정말로 이해하지 못하는 것은이 예에서 당신이 성취하고자하는 것입니다. –

2

아마도 BitArray 클래스를 사용하여 찾고있는 것을 달성 할 수 있습니까? 그들은 당신이 찾고있는 것으로 쉽게 변환해야하는 참조에 몇 가지 샘플 코드가 있습니다.

관련 문제