Из кода, который вы публикуете, и вашего описания, это не похоже на то, что вы имеете дело со строкой символов ascii, а скорее с буфером, представляющим двоичное число. Чтобы преобразовать необработанное двоичное значение в целое число, вам просто нужно привести его к правильному значению. Обратите внимание, что вы должны быть осторожны, чтобы привести его к целочисленному типу, который имеет правильный размер. Вы указали только 2 байта в вашем примере, но вы читаете 4.
Для Visual Studio 2008, где int или long - это 4-байтовое целое число, вы можете просто сделать это:
int x = *reinterpret_cast<int*>(num_char);
Обратите внимание, что для большей переносимости вы должны использовать тип, который гарантированно будет 4 байта. В Visual C ++ вы можете использовать DWORD. Хотя предпочтительным решением будет использование int32_t из stdint.h , хотя это не доступно в Visual Studio до версии Visual Studio 2010.
Кроме того, вы не упоминаете, если ваш тип подписан или без знака, если он без знака, то используйте тип без знака.