コードに問題があります。コードを実行すると、短い「オペコード」の値が 52496と間違っています。そのため、コードを段階的にデバッグします...そして、この「オペコード」を実行すると、正しい値 4624 になります。誰かが私にヒントを与えることができますか?
void packet_get()
{
boost::shared_ptr<boost::array<unsigned char, 2>> opc(new boost::array<unsigned char, 2>);
recv_two_bytes(opc);
unsigned short opcode;
unsigned char * test[2];
test[0] = &opc->at(0); // *test[0] == 0x12
test[1] = &opc->at(1); // *test[1] == 0x10
opcode = 0;
int i = 0;
for(i = 0; i <= 1; i++)
{
opcode = (opcode<<8) | *(test[i]);
}
// opcode should now be short 4624
}