2009-06-02 3 views
1

바이트 배열의 내용을 텍스트 파일에 표시하려고합니다.바이트 [] 문자열 변환이 원하는대로 작동하지 않는 것 같습니다

 var writer = new System.IO.StreamWriter(Application.StartupPath + @"\B323.txt"); 
     writer.Write(data.ToString()); 
     writer.Close(); 
     writer.Dispose(); 

데이터 바이트 [] 배열이다

내 코드이다.

출력은 "System.Byte []"왜? 나는이 배열의 내용을 표시하기 위해 노력하고있어

, 여기서 문제는?

답변

7

그냥 System.Byte[]을 반환 byte[].ToString()를 호출합니다. 바이트 배열을 어떻게 변환하려고 했습니까? 바이트를 문자열로 변환하는 방법에는 여러 가지가 있습니다. 당신이 "진수 덤프"로합니다

당신은 당신이 BitConverter.ToString(byte[])

5B-3E-5D 

당신이 후에 어떤 것인가요 출력 등 생산합니다 수있는? 실제로이미이 인코딩 된 텍스트를 나타내므로 파일에 바이트를 쓰고 자한다면 FileStream을 대신 사용하여 직접 작성해야합니다.

(잡담 등의 다른 점 : 당신이 작가를 처리 할 using 문을 사용해야합니다, 당신은 이미 폐기하고 있기 때문에 가까운 호출 할 필요가 없습니다 File.WriteAllText로 시작하는이 일을 간단한 방법입니다.)

+0

나는 단지 "System.Byte []"를 표시하는 이유를 알고 싶습니다. 예, 원하는 것이지만 LINQ를 사용하여 문자 사이에 대시 대신 공백을 표시합니다. System.Byte []를 표시하는 이유를 알고 싶습니다. –

+2

'Object.ToString()'의 디폴트의 구현은 형명을 덤프하는 것입니다. 배열은 이것을 무시하지 않습니다. –

+0

감사합니다. Jon! 책 2 판이 어떻게 진행됩니까? 나는 기다릴 수 없어! –

3

ToStringdata으로 호출하면 텍스트 표현으로 바뀝니다 (디버깅 할 때보기 또는 로컬 창과 동일).

data을 스트림에 쓰거나 System.Text.Encoding에있는 함수 중 하나를 사용하여 byte []를 문자열로 변환 할 수 있습니다.

3

기본 ToString() 구현은 클래스 이름을 에코합니다. ASCIIEncoding.GetString과 같은 Encoding.GetString() 메서드 중 하나를 원할 수도 있습니다.

1

원하는 작업은 무엇입니까? 데이터를 바이트 또는 텍스트 표현으로 작성 하시겠습니까?

진 :

FileStream fS = new FileStream(Application.StartupPath + @"\B323.txt"); 
BinaryWriter bW = new BinaryWriter(fS); 
bW.Write(data); 
fS.Close(); 

또는

텍스트 표현 :

var writer = new System.IO.StreamWriter(Application.StartupPath + @"\B323.txt"); 
writer.Write(System.Text.ASCIIEncoding.ASCII.GetString(data)); 
writer.Close(); 
1

당신이 배열, 텍스트 파일에 이와 같은 아마 뭔가를 표현하려는 방식에 따라

// 12-34-AB 
writer.Write(BitConverter.ToString(data)); 

// 1234AB 
writer.Write(BitConverter.ToString(data).Replace("-", string.Empty)); 

// 0x1234AB 
writer.Write("0x" + BitConverter.ToString(data).Replace("-", string.Empty)); 

// [ 12, 34, AB ] 
writer.Write("[ " + BitConverter.ToString(data).Replace("-", ", ") + " ]"); 

// [ 0x12, 0x34, 0xAB ] 
writer.Write("[ 0x" + BitConverter.ToString(data).Replace("-", ", 0x") + " ]"); 
관련 문제