2013-04-12 6 views
8

바이트 배열이 있습니다. 각 바이트의 8 비트 값은 내 문자열의 문자로 원하는 것입니다. 내 8 비트 값을 ASCII, ANSI, UTF-8, ISO-8859-1, 일일 온도 판독 값, 선상의 점으로부터의 인치 거리 또는 원하는 값으로 생각할 수 있습니다. 그건 상관 없어요.byte []를 인코딩없이 데이터 손실없이 문자열로 변환하는 방법

끝나면. 즉, 상위 8 비트는 0이고 하위 8 비트는 소스 바이트와 같아야합니다. 즉, 상위 8 비트는 0이어야하고 하위 8 비트는 소스 바이트와 같아야합니다.

바이트 인코딩을 변경하지 않고 단순히 바이트를 매핑하는 데 사용하는 인코딩은 무엇입니까?

+0

무엇이 궁금한가? 이 문자열은별로 유용하지 않을 것입니다. 디스플레이 나 인쇄에는 사용할 수 없으며 외부 시스템과 잘 어울리지 않을 것입니다. 바이트에서 변환하는 이유는 무엇입니까? –

+0

@JoeEnos 왜 문자열을 표시하거나 인쇄 할 수 없습니까? 바이트 배열의 데이터에 따라 매우 잘 될 수도 있습니다. – phoog

+0

@JoeEnos, 내가했던 것처럼 질문을 표현하는 목적은 "왜 이러는거야?"라는 무리를 피하려고 노력하는 것이 었습니다. "인코딩을 우회 할 필요가있는 것은 해결책이 잘못되었다는 것을 나타내는 붉은 깃발"입니다. 문제는 내 문제의 붕괴 된 형태입니다. 간단히 말해서, Microsoft의 모든 똑똑한 사람들이 내 데이터를 무시하지 않고 바이트 배열을 String으로 변환하는 방법은 그들이 내가 시도하는 것보다 잘 알고 있다고 생각하기 때문입니다. 할 것. :-) – Craig

답변

14

이 요구 사항에 대해서는 인코딩의 필요성을 알지 못하기 때문에 인코딩을 생략하고 직접 바이트를 변환합니다.

+0

이것은 본질적으로 내가하고 있던 일이지만 내 성공을 가린 다른 곳에서 오류를 만들고있었습니다. :-) – Craig

+1

다른 방법은 어떻습니까? 이 방법으로 생성 된 문자열을 바이트 배열로 다시 변환하는 방법은 무엇입니까? – MaxOvrdrv

+0

많은 옵션. 최소한의 타이핑을 가진 것 :'s.ToCharArray(). Select (c => (byte) c) .ToArray();'- s는 문자열이다. 이 솔루션은 모든 문자가 0에서 255 사이의 범위에 있다는 가정하에 원래의 질문에 대한 가정에 따라 달라집니다. 다른 컨텍스트에서는 텍스트 인코딩을 사용해야합니다. – phoog

관련 문제