C++:当我将值分配给缓冲区时,它不起作用
C++: When I assign the values to a buffer, it doesn't work
好的,所以我有一段代码。这会将标头的内容插入缓冲区:
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);
,并且缓冲区内容完全错误。我尝试通过添加这段代码进行调试:
std::cerr << "DEBUG: Values are: "
<< ((header.sequenceNumber >> 24) & 0xFF) << ", "
<< ((header.sequenceNumber >> 16) & 0xF) << ", "
<< ((header.sequenceNumber >> 8) & 0xFF) << ", "
<< (header.sequenceNumber & 0xFF) << ", "
<< ((header.ackNumber >> 24) & 0xFF) << ", "
<< ((header.ackNumber >> 16) & 0xFF) << ", "
<< ((header.ackNumber >> 8) & 0xFF) << ", "
<< (header.ackNumber & 0xFF) << ", "
<< ((header.connectionId >> 8) & 0xFF) << ", "
<< (header.connectionId & 0xFF) << ", "
<< (0 & 0xFF) << ", "
<< (i & 0xFF) << endl;
std::cerr << "DEBUG: Buffer header is: "
<< buffer[0] << ", " << buffer[1] << ", " << buffer[2] << ", "
<< buffer[3] << ", " << buffer[4] << ", " << buffer[5] << ", "
<< buffer[6] << ", " << buffer[7] << ", " << buffer[8] << ", "
<< buffer[9] << ", " << buffer[10] << ", " << buffer[11] << endl;
std::cerr << "DEBUG: getBuffer ends. The size is " << totalSize
<< ". The buffer is " << buffer << endl;
这显示在控制台中:
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
这 12 个值是正确的。但是缓冲区的 12 个元素是完全错误的。
我认为缓冲区内容是正确的,但是您将其报告给stdrr的方式失败了。
std::cerr << "DEBUG: Buffer header is: "
<< buffer[0];
向 stderr 写入uint8_t
(如果buffer
类型为 uint8_t*
(,但这只是一个unsigned char
,因此使用 ASCII 编码。若要获取正确的整数值,请使用
std::cerr << "DEBUG: Buffer header is: "
<< int(buffer[0]);
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 从 TS 到C++的平面缓冲区不起作用
- C++:当我将值分配给缓冲区时,它不起作用
- 自动生成的顶点缓冲区和索引缓冲区不起作用
- c++ 比较在缓冲区的 2 个字符串之间不起作用
- 流到缓冲区工作,文件到缓冲区不起作用
- 深度缓冲区似乎不起作用-OpenGL着色器