Я работаю над десериализатором в C ++. Я получаю поток данных и передаю его в массив символов. На данный момент все работает отлично, за исключением случаев, когда значение превышает 100, возвращаемое мной значение становится отрицательным. Например, 241 становится -15, но значения ниже, чем кажется 100, остаются прежними.
Вот код, который я запускаю
char streamBuffer[1024]; //where the stream data is held
/**code in between that transfer data stream to streamBuffer[]**/
char printBuffer[10];
for(int i = 0; i < 10 ; i++){
sprintf(printBuffer, "streamData = %ld",streamBuffer[i]);
PrintData(printBuffer); //prints the value
}
Например, мои потоковые данные могут выглядеть как 1,3,5,10,241 и т. Д.
Когда я добираюсь до функции printData, она дает мне правильное значение для любого значения ниже 100, как мне кажется.
Я использовал
sprintf(printBuffer, "streamData = %lld",streamBuffer[i]);
или
sprintf(printBuffer, "streamData = %d",streamBuffer[i]);
но я все еще не получаю правильные значения.
Так что мой вывод будет выглядеть так.
StreamData: 1
StreamData: 3
StreamData: 5
StreamData: 10
StreamData: -15