Преобразование беззнакового символа * в читаемую строку и что делает эта функция - PullRequest
1 голос
/ 03 октября 2011

Я много гуглил, чтобы узнать, как конвертировать мой неподписанный символ * в печатаемую шестнадцатеричную строку.Пока я немного понимаю, как все это работает, а также разницу между знаковыми и беззнаковыми символами.

Можете ли вы сказать мне, что делает эта функция, которую я нашел?И помогите мне разработать функцию, которая преобразует беззнаковый символ * (который является хеш-строкой) в печатаемую строку?

Делает ли следующая функция:
- выполняет итерацию для каждого второго символаиз строки массива char
- в каждом цикле он читает символ в строке позиции [x], преобразует его в число без знака (с точностью до 2 десятичных знаков) и затем копирует этот преобразованный символ (число?) впеременные uChar.
- наконец, он сохраняет беззнаковый символ uChar в шестнадцатеричной строке

void AppManager :: stringToHex( unsigned char* hexString, char* string, int stringLength ) 
{     
    // Post:

    unsigned char uChar = 0;           

    for ( int x = 0; x<stringLength; x+=2 )     
    {         
        sscanf_s(&string[x], "%02x", &uChar);         
        hexString[x] = uChar;     
    } 

} 

Так что я предполагаю, что это означает, что он преобразует символ в строке в unsigned (& 2dcp), чтобы гарантировать, что он может быть правильнохранится шестнадцатеричная строкаЗачем использовать 2 знака после запятой, а не просто преобразовать знак со знаком (если этот знак со знаком) в знак без знака в совершенно другую строку?

Если у меня есть знак без знака * как я могу это сделать?преобразовать его во что-нибудь, что позволит мне распечатать его на экране?

1 Ответ

2 голосов
/ 03 октября 2011

Это не десятичные разряды, это цифры.Вы говорите: «Не давайте мне строку короче 2; если она короче 2 цифр, то добавьте ее к нулю».

Это так, если у вас есть шестнадцатеричная последовательность 0x0Aна самом деле он напечатает 0A, а не только A.

Кроме того, здесь нет преобразования со знаком / без знака.Шестнадцатеричные строки - это шестнадцатеричные строки - они не имеют знака.Они представляют собой двоичное представление данных, и в зависимости от того, как они интерпретируются, могут быть прочитаны как целые числа со знаком в виде дополнения до двух, целые числа без знака, строки или что-то еще.

...