Попытка отобразить строку ASCII, но она усекается - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь отобразить шестнадцатеричные символы как ASCII, но оно усекается после \ x00.Я понимаю, что \ x00 означает NULL, но есть ли способ каким-то образом пропустить это значение и отобразить все шестнадцатеричные значения?

int main () 
{
    const char* blob = "\x31\x00\x32";
    std::cout <<"hexChar=" << blob  << std::endl; 
    return 0;
}

Вывод: hexChar=1

Я хочу, чтобы вывод также включал последний символ 2 (0x32): hexChar=1 2

Возможно ли это?

1 Ответ

2 голосов
/ 17 апреля 2019

Проблема в том, что NUL-оканчивающаяся строка (это то, что каждый понимает голый const char * без явной длины как) завершается NUL. Таким образом, ваша строка имеет только один символ, и печатается только один - символ '\x32', находящийся в памяти, не является частью строки. По определению, такая строка не может содержать символ '\x00', поскольку она заканчивается строкой.

Вам потребуется использовать другое представление, которое может содержать NUL, например std::string:

int main () 
{
    std::string blob("\x31\x00\x32", 3);
    std::cout <<"hexChar=" << blob  << std::endl; 
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...