이 코드를 여러 번 다시 쓰려고 시도했지만 올바르게 바이트를 뱉어 냈지만 메모리 스트림에서 만든 배열을 읽으려고하면 비어 있습니다. 왜 내가 잘못 했습니까? 당신은 스트림을 되감기하지 않을memorystream에 바이트 배열을 쓰면 쓰여지는 값이 0 만됩니까?
Dim bytes() As Byte = System.Text.Encoding.ASCII.GetBytes("test this shit")
Dim bytesString As String = ""
Dim i As Integer = 0
i = 0
Dim byteStream As New System.IO.MemoryStream
Do While i < bytes.Length
If bytes(i).ToString <> 0 Then
bytesString = bytesString & "|" & bytes(i).ToString
byteStream.WriteByte(bytes(i))
Debug.Print(bytes(i).ToString)
End If
i = i + 1
Loop
i = 0
byteStream.Flush()
Dim newBytes(byteStream.Length - 1) As Byte
byteStream.Read(newBytes, 0, byteStream.Length)
byteStream.Close()
Dim stringData As String = System.Text.Encoding.ASCII.GetString(newBytes)
Debug.Print("Data: " & stringData)
나는 tcp 데이터를 읽으려고하는데 바이트 배열 (분명히)이 무엇인지 알지만 3에서 26까지의 바이트에만 관심이있다. 그리고 그 바이트를 얻는 가장 좋은 방법이다 새로운 바이트 배열에 추가합니다. – fMinkel
@fMinkel : 정말로 새로운 배열로 가져와야합니까? 처음 세 바이트는 사용할 수 없습니까? Array.Copy를 사용하여 데이터를 새 배열에 복사하는 방법을 고려 했습니까? – Guffa
Guffa, Copy 및 CopyTo를 사용하여 시도했지만 원본 배열의 중간 부분을 사용하는 방법을 알아 내지 못했습니다 (수천 개의 요소가 될 수있는 배열의 3-26) – fMinkel