Я нашел код для преобразования шестнадцатеричной строки в signed int с использованием strtol, но я не могу найти что-то для короткого int (2 байта). Вот мой кусок кода:
while (!sCurrentFile.eof() )
{
getline (sCurrentFile,currentString);
sOutputFile<<strtol(currentString.c_str(),NULL,16)<<endl;
}
Моя идея состоит в том, чтобы прочитать файл со значениями шириной 2 байта (например, 0xFFEE), преобразовать его в подписанный int и записать результат в выходной файл. Скорость выполнения не имеет значения.
Я мог бы найти несколько способов избежать этой проблемы, но я хотел бы использовать «однострочное» решение, поэтому, возможно, вы можете помочь в этом :)
Редактировать: файлы выглядят так:
0x0400
0x03fe
0x03fe
...
Редактировать: я уже пытался использовать шестнадцатеричный оператор, но перед этим мне все еще нужно преобразовать строку в целое число.
// This won't work as currentString is not an integer
myInt << std::hex << currentString.c_str();