Microsoft MVP성태의 닷넷 이야기
byte => string => byte 변환 문의드립니다. [링크 복사], [링크+제목 복사]
조회: 8072
글쓴 사람
정영훈 (realhooni at naver.com)
홈페이지
첨부 파일

안녕하세요.

C#으로 개발 중 이해되지 않는 부분 발생하여 문의 드립니다.

제 코드입니다.(hex => string => hex)

byte[] byte1 = new byte[] { 0xe3 };

string str = Encoding.Default.GetString(byte1);

byte[] byte2 = Encoding.Default.GetBytes(str);


byte2의 값이 0xe3이 돼야 할 것 같은데 0x3f가 됩니다. (일부 0x01 등은 0x01로 되는 경우도 있습니다.)

C++을 오래 사용하다 최근에 C#에 입문하게 되었는데 부족한 부분이 많습니다.

이상입니다. 읽어주셔서 감사합니다.








[최초 등록일: ]
[최종 수정일: 12/13/2019]


비밀번호

댓글 작성자
 



2019-12-13 01시58분
0x3f는 '?'에 해당하는 글자인데요, 다음의 글을 읽어보시면 됩니다.

Encoding 타입의 대체(fallback) 메카니즘
; http://www.sysnet.pe.kr/2/0/1446
정성태
2019-12-13 03시09분
[정영훈] 감사합니다 ^^
[guest]
2019-12-20 02시27분
[고양이] 0xe3 는 UTF-8 문자가 아니기 때문에 UTF-8 코드상의 대체 문자로 바뀐겁니다.
0xe3 을 포함하는 확장 아스키 코드는 유니코드/UTF-8에 호환되지 않습니다.

Encoding.GetEncoding(437)등의 라틴계열 코드페이지를 사용하면 인코딩/디코딩시 확장 아스키 코드를 유지할 수 있습니다.
[guest]
2019-12-20 08시34분
@고양이 왜 utf-8 인코딩이 언급되는 거죠?
정성태
2019-12-24 01시56분
[ryujh] 안녕하세요.
0xe3 = 227 이고 Encoding.Default 에 포함되지 않는 (처리하지 못하여 fallback) 보니 원래 문자가 아닌 '?' 자체로 변환되게 됩니다.

byte[] byte1 = new byte[] { 0xe3 };

string str = Encoding.UTF8.GetString(byte1);

byte[] byte2 = Encoding.UTF8.GetBytes(str);

로 하면 원래대로 byte2 를 구할 수 있는데 Encoding.Default 를 사용해야 되는 경우가 있는지는 모르겠습니다.

감사합니다.
[guest]

... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4854heyh...7/6/20179497
4853heyh...7/5/20179611성태님이 작성한대로 해봤습니다. [1]파일 다운로드1
4852김레오7/4/201711791서드파티 dll 디버깅에 대해 질문드립니다. [2]
4851김현준7/3/201710895Datagridview VirtualMode 시 GC가 계속 호출되는 현상이 이해가 안갑니다. [2]
4850heyh...7/3/201710638성태님 밑에 질문드렸던 오류입니다. [1]파일 다운로드1
4849포플러7/2/201729320C#으로 만든 프로그램이 어느 순간 속도가 느려지거나 멈춤현상이 있습니다. [4]
4848윤진영7/2/201712275Microsoft Visual C++ 6.0 무설치 관련 [1]
4847heyh...6/30/201710278아무리 고민해도 답이 안나와서.. 질문 드립니다 [1]
4846heyh...6/28/201710317Clickonce에서 Clickonce로 변수 전달 [1]
4845heyh...6/26/20179989vb.net 에서 manifest 제거 방법 [1]파일 다운로드1
4844san6/21/20179422part3 pdf파일로 보는데 눈아퍼요.... 활자로 보고싶어요 [2]
4843윤현수6/20/20179648socket통신에 관한 질문입니다. [1]
4842오세운6/7/201710332로그인폼 다시 질문드려요. [1]
4841popo6/7/201710103궁금한사항이 있어 질문 드립니다. [1]
4840윤현수6/5/201710112datagridview에 바인딩시킨 dataset.table에 관련된 질문입니다. [2]파일 다운로드1
4839오세운6/2/201711015로그인폼 만들기 [1]
4838후배5/29/201711744PDF Reader 라이브러리.. [3]
4837KDP5/29/201711248c++ to C# 컨버팅 문의 [2]
4836popo5/26/201714381리플렉션 성능 관련 질문 드립니다. [2]
4835guest5/25/201710100wpf Canvas 질문드립니다. [1]
4834부탁드립...5/19/201711015익스체인지 서버 구동중 인증서를 받는 과정에서오류가 납니다 [1]
4833안종윤5/18/201711415winform을 Web Browser에 붙일 수 있는지요? [1]
4832guest5/17/201710900c# UDP socket예제 실행방법 [3]
4831guest5/15/201713384WPF .net 3.5에서 TextBox 한글 문제 [3]
4830초보자5/7/201718286프로그램 비정상 종료 메시지 창 없애는 방법 [4]
4829윤현수4/26/201714668System.Text.Encoding 질문 [1]
... 31  32  33  34  35  36  37  38  39  [40]  41  42  43  44  45  ...