我正在使用C ++进行反序列化。我得到了数据流,并将其传输到char数组。目前,一切工作正常,除非该值超过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
答案 0 :(得分:0)
解决方案是在sprintf语句中将char streamBuffer [1024]更改为未签名的char streamBuffer [1024],然后将%ld更改为%u。现在,超过100的值保持不变。