2014-11-03 5 views
0

"1" "0" "0" "0"의 btye 배열을 문자열로 변환 중입니다.byte []를 UTF8의 문자열로 변환

Encoding.UTF8.Getstring(myByteArray,0,4); 그 결과는 내가 기대 한 결과는 "1"이었다 "\0\0\0"

입니다. 내가 잘못하고있는 것은 무엇인가?

답변

2

UTF8의 문자 은 49 (10 진수)와 31 (16 진수)의 매핑이 UTF8 table입니다.

다른 데이터가 있지만 그 결과로 "1"을 예상하는 이유는 확실하지 않습니다. 결과로 "1"을 예상하면 바이트 배열에 단일 바이트 값 49이 포함되어야합니다.

var result = Encoding.UTF8.GetString(new byte[] { 49 });//result is 1 

내가 가진 데이터가 UTF-8로 인코딩 된 바이트가 아니라고 생각합니다. 다른 인코딩 일 수도 있습니다.

UTF8을 사용하여 임의의 바이트를 문자열로 변환 할 수는 없습니다. 이렇게하려면 먼저 바이트를 UTF8으로 인코딩해야합니다. 따라서 데이터 인코딩이 무엇인지 알아 낸 다음 적절한 인코딩을 사용하여 데이터 인코딩을 취소 할 수 있습니다.

+0

괜찮습니다. 일부 데이터는 UTF8이고 일부는 숫자입니다. 그 숫자는 UTF8 코드가 아닙니다. 하지만 나는 foreach로 반복하고있어 어느 것을 볼 수는 없다. 아마 둘 다 인코딩하는 방법이있을 수 있습니다. –