Как преобразовать ASCII в двоичный файл? - PullRequest
1 голос
/ 20 марта 2011

У меня есть следующая строка:

char * strIn = "f2";

Когда я смотрю на строку [0], я хотел бы получить 1111 вместо 'f'.

Как мне это сделать?

Спасибо

Ответы [ 3 ]

3 голосов
/ 20 марта 2011

Вы имеете в виду преобразование шестнадцатеричной строки в двоичную?

strtol с основанием 16 должно сделать трюк

2 голосов
/ 20 марта 2011

... Кто-то сказал ранее

и f в двоичном виде будет 11001100

Все, что я могу сказать, это вау ... нет, F в двоичном коде равно 1111 (15 десятичных)

Если я правильно понял ваш вопрос, вы хотите получить двоичное значение для любого символа ascii ... т.е.

Когда я смотрю на strIn [0], я бы хотел чтобы получить 1111 вместо 'F'.

Итак ... вот небольшая функция, которая сделает это ...

int ConvertHexAsciiValue(char c)
{
    if(isalpha(c))
    {
        char r = tolower(c);
        if(r > 'f')
        {
            // - Handle error here - character is not base 16
            return 0;
        }

        int nIndex = (int)('a' - r);
        nIndex = -nIndex;
        nIndex += 10;
        return nIndex;
    }
    else if(isdigit(c))
    {
        int nIndex = c - '0';
        return nIndex;
    }

    // Handle error here - character is not A-F or 0-9
    return 0;
}

Если я вас не правильно понял, вы должны знать, что вы не можете прочитать строку "1111" для символа strIn [0]. Однако вы можете получить двоичное значение для каждого символа (интерпретируемое как шестнадцатеричное значение), используя предоставленную мной функцию ...

 for(int x = 0; x < strlen(strIn); x++)
 {
     int val = ConvertHexAsciiValue(strIn[x]);
     printf("Value %d: %d\n", x, val); 
 }

Если бы strIn был установлен на «f2», этот код выдает следующий вывод на консоль

Value 0: 15
Value 1: 2
0 голосов
/ 20 марта 2011

Чтобы получить двоичный код, нужно взять соответствующий десятичный номер, взять его и разделить на несколько раз, сохранить остаток (который станет двоичным числом), сохранить все число, разделить на дваи повторяйте весь процесс, пока не достигнете 0.

Вот небольшое приложение, которое у меня было в моей коллекции, которое преобразует строку в двоичный файл.

...