Microsoft MVP성태의 닷넷 이야기
byte => string => byte 변환 문의드립니다. [링크 복사], [링크+제목 복사]
조회: 7994
글쓴 사람
정영훈 (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]

1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5753흰털너부리11/24/20223386List와 ObservableCollection을 비교 해서 다른 값 추출 FirstOrDefault 객체 비교 [4]파일 다운로드1
5752푸헐11/15/20223527app.config 에 connectionStrings를 aspnet_regiis로 enctyption [4]
5751차가워11/8/20224336vs2022 preview net7 AOT 콘솔 실행 성능 [7]
5749차가워11/4/20223746전처리 지시문 #if DEBUG 배포시 실행 여부 [1]
5748김기헌11/3/20224076안녕하세요 선생님 싱글톤 패턴을 꼭 이렇게 사용해야 하나요? [6]
5747김기헌11/2/20223475안녕하세요 선생님 네트워크 관련 용어 중 IP 주소가 왜 논리적 주소라고 표현되는 건가요? [2]
5746물냉면이...11/2/20223649서로 다른 클래스에 있는 동일 함수의 일괄 호출 방법에 대해 궁금합니다. [3]
5745흰털너부리11/1/20224010.net core web api 사용 제한에 관한 질문 입니다. [2]
5744차가워10/31/20224392윈폼 Console.WriteLine(); 연산 문의 [1]
5743흰털너부리10/27/20223714reflection, static, override 질문입니다. [1]
5742차가워10/27/20223616하나의 socket에 여러 스레드가 접근 하는 경우 [1]
5741조호상10/27/20223868OpenCVSharp4 구현 가능 문의 [1]
5740혜성10/26/20224707Visual Studio 2022 C# 콘솔 프로그램 기본 코드 변경된 이유는 무엇인가요? [2]
5739슬픈단잠10/25/20223668조언 주신 방법으로 해봤으나, 여전히 어디가 문제인지 파악을 못했습니다. [2]
5738슬픈단잠10/24/20224050C# 마샬링 관련 질문입니다. [2]
5737감사합니...10/20/20224682찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. [8]파일 다운로드1
5736초보 개...10/19/20223702c# winforms 프로그램을 setup 파일로 배포 시, 설정 문의 [2]
5735농상10/17/20224357싱글톤 공부중 질문이 있습니다. [8]
5734mins10/14/20224119델파이 dll을 c#에서 사용하기 관련해서 포인트 관련이라 질문을 올립니다. [2]
5733김경환10/12/20224115선생님 질문하나만드리겠습니다. [1]
5732kss10/8/20224423c# socket.poll 버그인가요? [2]파일 다운로드1
5731kss10/8/20223979c# socket.poll 버그인가요? [3]
5730김재환10/7/20224492WPF에서 디스플레이 배율이 100%가 아닌 경우, Window의 포지션 정보가 부정확해지는 문제 [2]
5729김기헌10/2/20224159안녕하세요 선생님 뮤텍스 관련 질문 드립니다 [2]
5728김경환9/29/20224168그리드뷰관련마지막질문하나드리겠습니다선생님 [5]파일 다운로드1
5727김경환9/26/20224059c# 윈폼 tcp/ip 기반 데이터그리드뷰질문하나드리겟습니다 [3]
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...