Прочитайте hex в C #, используя IO - PullRequest
9 голосов
/ 10 апреля 2011

Привет, я новичок в C #, переходя с Java.Попытка прочитать файл с помощью ввода-вывода в HEX.Когда я читаю первый байт, я не понимаю, что вижу в своем редакторе Hex.

Я использую

StreamReader reader = new StreamReader(fileDirectory);
int hexIn;
String hex;

for (int i = 0; (hexIn = reader.Read()) != -1; i++){
    hex = Convert.ToString(hexIn, 16);
}

в Java, которую я использовал ...

    FileInputStream fis = new FileInputStream(file);
    long length = file.length();

    int hexIn;
    String hex = "";

    for(int i = 0; (hexIn = fis.read()) != -1; i++){

        String s = Integer.toHexString(hexIn);
        if(s.length() < 2){
            s = "0" + Integer.toHexString(hexIn);
        }

Надеюсь, это имеет смысл.Любая помощь будет наиболее полезной:)

Спасибо

Ответы [ 2 ]

12 голосов
/ 10 апреля 2011

Не используйте StreamReader - это только для символов в определенной кодировке (по умолчанию UTF8). Вместо этого используйте класс FileStream:

FileStream fs = new FileStream(fileDirectory, FileMode.Open);
int hexIn;
String hex;

for (int i = 0; (hexIn = fs.ReadByte()) != -1; i++){
    hex = string.Format("{0:X2}", hexIn);
}
0 голосов
/ 10 апреля 2011

Вам нужен такой код C# для достижения тех же результатов, что и ваш код Java:

hex = hexIn.ToString("X").PadLeft(2, '0');

Convert.ToString также работает, но лучше использовать IMO с использованием нативного ToString целого числа.
В любом случае, вам не хватало части PadLeft, которая действительно заставила 15 быть 'f' вместо 0F.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...