필자는 일반적으로 사람이 읽을 수있는 형식으로 일련 화 된 데이터 메시지를 포함하는 언어를 사용하지만 언어의 일부 프로덕션에는 그대로 원시 이진 데이터가 포함되어 있습니다.이진 내용을 mangling하지 않고 Byte()에서 String을 얻으려면 어떻게해야합니까?
내 파서는 가장 쉬운 방법 인 버퍼이므로 String
을 버퍼로 사용합니다. 그러나 데이터는 네트워크 소켓에서 Byte
의 배열로 읽습니다.
지금, 나는 Byte()
과 String
사이의 점들을 연결하기 위해 노력하고있어 : 아스키 인코딩 그냥 혼자 바이트를 떠나 무효로 판명 것이라고
' data as Byte()
' count as Integer
' buffer as String
buffer += System.Text.Encoding.ASCII.GetString(data, 0, count)
하지만 내 초기 가정; 7 비트 모델에 맞지 않는 값을 가진 모든 바이트는 '?'
으로 변환되었습니다.
그래서 그때는 단일 바이트 "유니 코드"혼자 바이트를 남길뿐만 아니라 8 비트 범위에서 값을 허용해야 인코딩을 사용하는 방법에 대한 생각 :
' data as Byte()
' count as Integer
' buffer as String
Dim enc = New System.Text.UTF8Encoding
buffer += enc.GetString(data, 0, count)
을하지만 내 데이터는 여전히 엉망이다. 실제로 실제로 을 추론 할 수 없었습니다. 데이터가 맹 글링되는 방식은 정확히입니다. 그러나 데이터의 길이가 변경되면서 바이트가 축 어적으로 남지 않음을 나타냅니다.
String
내용은 내 Bytes()
입력의 내용을 축 어적으로 그대로 복사 한 것입니다.
처음에 바이트를 어떻게 인코딩 했습니까? – JaredPar
@ JaredPar : 텍스트 인코딩이 없습니다. 해당 바이트는 2 진수입니다. (들어오는 데이터 스트림의 사람이 읽을 수있는 섹션은 ASCII 임에도 불구하고)이 인코딩을 유지하지 않는 동안 Byte()에서 'String'을 얻고 싶습니다. 아마 VB.NET이 이것을 지원하지 않습니까? –
올바르게 디코딩하기 위해 인코딩에 대해 약간 알아야하므로 인코딩을 바이트 스트림 자체로 인코딩하지 않는 한 실제로는 불가 지합니다. 사람이 읽을 수있는 내용을 지나서 읽을 수없는 부분을 조사하고있는 것처럼 들릴 수도 있습니다. 'byte()'에 대해 포맷을 설정 했습니까? – JaredPar