Я работаю с некоторыми данными EBCDIC, которые мне нужно проанализировать и найти некоторые значения Hex. У меня проблема в том, что кажется, что я читаю файл с неправильной кодировкой. Я вижу, что моя запись начинается с "!
" (что в EBCDIC x5A
), но при выполнении преобразования в шестнадцатеричное значение возвращается как x21
, что является значением ASCII для "!
" .
Я надеялся, что во фреймворке был встроенный метод, но я боюсь, что мне придется создать собственный класс для правильного сопоставления набора символов EBCDIC.
Using fileInStream As New FileStream(inputFile, FileMode.Open, FileAccess.Read)
Using bufferedInStream As New BufferedStream(fileInStream)
Using reader As New StreamReader(bufferedInStream, Encoding.GetEncoding(37))
While Not reader.EndOfStream
Do While reader.Peek() >= 0
Dim charArray(52) As Char
reader.Read(charArray, 0, charArray.Length)
For Each letter As Char In charArray
Dim value As Integer = Convert.ToInt16(letter)
Dim hexOut As String = [String].Format("{0:x}", value)
Debug.WriteLine(hexOut)
Next
Loop
End While
End Using
End Using
End Using
Спасибо!