2010-11-30 7 views
5

가능한 중복 :
.NET String to byte Array C#String to byte [] 그리고 그 반대로?

방법 [] 배열 바이트 내가 문자열로 변환 않으며, 그 반대의 경우도 마찬가지? 문자열을 일부 바이너리 저장소에 저장해야합니다. 예제를 양방향으로 보여주십시오. 그리고 한 가지 더 : 각 문자열은 90Kb보다 클 수 있습니다.

+3

이 질문에는 언어 간 호환이되지 않는 런타임 직렬화 출력의 동작에 따라 오해의 소지가있는 대답이 있습니다. 따라서 나는 중복으로 투표 마감하지 않을 것입니다. UTF-8과 같은 적절한 인코딩을 사용하는 것이 훨씬 더 나은 방법입니다. – cdhowie

+2

@cdhowie : 동의. "오해의 소지가있는 오해의 소지가있는"것은 정중 한 방법입니다. :) – MusiGenesis

+0

답장을 보내 주셔서 감사합니다!;) – Edward83

답변

18

당신이 UTF-8 인코딩을 사용하려면 : 당신이 떨어져 행진 누군가가 이미 일반적으로이 있음을 알고 있어야의 주어진 예제 중 하나를 사용하기 전에

// string to byte[] 
byte[] bytes = Encoding.UTF8.GetBytes(someString); 

// byte[] to string 
string anotherString = Encoding.UTF8.GetString(bytes); 
8

을, 문자열과 바이트 시퀀스 간의 고유 한 매핑이 없습니다. 문자열이 이진으로 매핑되는 방식 (또는 그 반대로)은 사용하는 encoding에 의해 결정됩니다. Joel Spolsky는이 주제에 awesome article을 썼습니다.

문자열을 얻기 위해 바이너리를 디코딩 할 때는 먼저 바이너리를 생성하는 데 사용한 것과 동일한 인코딩을 사용해야합니다. 그렇지 않으면 문제가 발생합니다.

관련 문제