Почему значения свыше 100 становятся отрицательными? - PullRequest
0 голосов
/ 07 марта 2019

Я работаю над десериализатором в 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

1 Ответ

0 голосов
/ 08 марта 2019

Решение состояло в том, чтобы изменить char streamBuffer [1024] на unsigned char streamBuffer [1024] и изменить% ld на% u в выражении sprintf. Теперь значения свыше 100 остаются прежними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...