Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:当我将值分配给缓冲区时,它不会';行不通_C++_Arrays_Type Conversion_Buffer - Fatal编程技术网

C++ C++;:当我将值分配给缓冲区时,它不会';行不通

C++ C++;:当我将值分配给缓冲区时,它不会';行不通,c++,arrays,type-conversion,buffer,C++,Arrays,Type Conversion,Buffer,好的,我有一段代码。这将把标题的内容插入缓冲区: buffer = (uint8_t*)malloc(totalSize); buffer[0] = ((header.sequenceNumber >> 24) & 0xFF); buffer[1] = ((header.sequenceNumber >> 16) & 0xFF); buffer[2] = ((header.sequenceNumber >> 8) & 0xFF); bu

好的,我有一段代码。这将把标题的内容插入缓冲区:

buffer = (uint8_t*)malloc(totalSize);
buffer[0] = ((header.sequenceNumber >> 24) & 0xFF);
buffer[1] = ((header.sequenceNumber >> 16) & 0xFF);
buffer[2] = ((header.sequenceNumber >> 8) & 0xFF);
buffer[3] = (header.sequenceNumber & 0xFF);
buffer[4] = ((header.ackNumber >> 24) & 0xFF);
buffer[5] = ((header.ackNumber >> 16) & 0xFF);
buffer[6] = ((header.ackNumber >> 8) & 0xFF);
buffer[7] = (header.ackNumber & 0xFF);
buffer[8] = ((header.connectionId >> 8) & 0xFF);
buffer[9] = (header.connectionId & 0xFF);
buffer[10] = (0 & 0xFF);
unsigned i = (((unsigned)header.ack) << 2) + (((unsigned)header.syn) << 1) + (unsigned)header.fin;
buffer[11] = (i & 0xFF);

这12个值是正确的。但是缓冲区的12个元素是完全错误的

我认为缓冲区内容是正确的,但您向stderr报告内容的方法失败了

std::cerr << "DEBUG: Buffer header is: " 
          << buffer[0];

伟大的我把它改了一点,改为(int)buffer[0],它可以工作了。@NormalGuy很高兴它有帮助。BTW,<代码> int(缓冲区[0 ])< /C>是C++风格,<代码>(int)缓冲区[0 ] < /C>是坏的旧C样式,不推荐(但您似乎是一个C黑客,使用了 MalCube)()。malloc?你在写C++。使用std::vector。
DEBUG: Values are: 0, 0, 48, 57, 0, 0, 0, 0, 0, 0, 0, 2
DEBUG: Buffer header is: , , 0, 9, , , , , , , ,
DEBUG: getBuffer ends. The size is 12. The buffer is
std::cerr << "DEBUG: Buffer header is: " 
          << buffer[0];
std::cerr << "DEBUG: Buffer header is: " 
          << int(buffer[0]);