2011-07-26 3 views
1

Hallo,일반 텍스트로의 비 문자열 2 진 코드 16 비트

평이한 텍스트로 변환하는 방법. 거기에 16 바이트 행이 있다고 생각합니다.

000006F0 DB 4D D9 94 B7 F0 F9 C9 70 F1 D3 7C E3 EC 65 93 .M......p..|..e. 
00000700 18 66 FD 0E C1 B9 78 BE 83 14 B0 E0 76 27 3C 69 .f....x.....v'<i 
00000710 5F 18 19 FF 5C AC 15 24 84 CF BC F9 F1 04 56 06 _...\..$......V. 
00000720 4A 45 07 6D 8B 9F 96 51 8C E7 FE 98 B7 32 87 F6 JE.m...Q.....2.. 
00000730 94 0B 3F 09 BB 15 E5 9F D3 B2 4D 40 03 DE 23 B2 [email protected]#. 
00000740 84 6C 39 37 15 C6 4D 0E 02 57 0B B2 AC 69 A8 7C .l97..M..W...i.| 
00000750 A4 71 D8 DB CF 52 28 10 6C 3C 3E A2 59 B0 CD CF .q...R(.l<>.Y... 
00000760 34 6B D9 9D 7E 5A D3 49 32 E5 91 97 2C AC 40 F2 4k..~Z.I2...,[email protected] 
00000770 8C 15 25 92 07 DE A7 B2 72 22 84 6B CD 33 56 D5 ..%.....r".k.3V. 
00000780 72 16 78 5F AD DB FC 12 AE 7D BB 80 AA AE DE 8A r.x_.....}...... 

지금 내가 Encoding.ASCII.GetString을 시도

가되어야한다. 내 텍스트 길이가 항상 위와 같지 않고 내 버전에 몇 가지 특수 문자가있는 이유는 무엇입니까?

0200 43 93 87 31 D1 13 50 C2 73 9A 74 12 72 65 1C 23  C??1?P?s?tre# 
0220 1D D3 35 6D A9 24 2C EC 70 CC 73 1A 03 14 4D D1  ?5m?$,?p?sM? 
0240 13 42 69 2A 2C 45 07 DF A2 D4 72 CB 17 CB 4E A9  Bi*,E???r??N? 
0260 F1 1B 53 58 53 1B BF 6C 80 39 B4 66 DB 27 C9 6C  ?SXS?l?9?f?'?l 
0280 F3 18 BF 44 A0 2C 4F 84 BA 65 E8 A7 EB 32 B0 30  ??D?,O??e???2?0 
02a0 B9 19 39 13 70 B8 A2 10 18 FD 26 4D 23 9B 44 7C  ?9p???&M#?D| 
02c0 90 8F F9 B4 16 D6 63 C2 22 0D 7A FD 3E 6A C1 55  ?????c?"z?>j?U 
02e0 E8 BA A6 B2 55 D1 2E 95 D1 83 22 C0 CB 64 00 AA  ????U?.???"??d? 
0300 E3 21 49 A0 E2 B2 DC 0E 36 C2 04 4B 97 C7 58 35  ?!I????6?K??X5 

다른 것은 WPF의 텍스트 상자입니다. 내 텍스트에는 반품 (\ n)이 없습니다. 따라서, 정크의 다양한으로 나타납니다 ASCII 범위 이외의

02c0 90 8F F9 B4 16 D6 63 C2 22 0D 7A FD 3E 6A C1 55  ?????c?"z?>j?U 
02e0 E8 BA A6 B2 55 D1 2E 95 D1 83 22 C0 CB 64 00 AA  ????U?. 
???"??d? 
0300 E3 21 49 A0 E2 B2 DC 0E 36 C2 04 4B 97 C7 58 35  ?!I????6?K??X5 
+2

당신이 바이너리가 텍스트로 표현하는 방법을 ... 무엇을 달성하고자하는 분명하지 않다? 16 진 코드? 약간의 코드를 보여주세요. – Yahia

답변

4

ASCII는 당신이 바이트에 포함 할 수있는 가능한 값의 하위 집합을 포함, 그래서 아무것도 :하지만 WPF의 텍스트 상자는 나에게이 같은 텍스트를 보여줍니다 컴퓨터의 기본 문자 집합에.

0x20 이하의 바이트 값을 0x7F로 바꿀 필요가 있습니다. (당신이 원하는에있는 기간)

public static class ByteArrayExt { 
    public static byte[] ToASCIIFriendlyArray(this byte[] data) { 
     byte[] result = new byte[data.Length]; 
     for (int i=0;i<data.Length;i++) 
      result[i] = b >= 0x20 || b < 0x79 ? b : '.'; 
     return result; 
    } 
} 

Encoding.ASCII.GetString(data.ToASCIIFriendlyArray()); 
+2

ASCII 0x7f도 인쇄 할 수 없기 때문에 범위를 1 줄이길 원할 수 있습니다. –

관련 문제