如何在数组中存储十六进制? C ++ MFC

时间:2013-10-29 17:10:06

标签: c++ sockets mfc hex

我必须使用十六进制数组,因为我正在做一个与视频服务器控制器通信的程序,他只是理解十六进制的消息。我可以将视频控制器与我的服务器连接,但是当我尝试使用send()函数发送消息时,传递一个包含我的十六进制信息的unsigned char数组,它不起作用。

这就是我使用数组的方式。我不知道它是否正确。

 void sendMessage()
        {
               int retorno;
           CString TextRetorno; 
               unsigned char HEX_bufferMessage[12]; // declaration

            // store info
                HEX_bufferMessage[0] = 0xF0;
                HEX_bufferMessage[1] = 0x15;
                HEX_bufferMessage[2] = 0x31;
                HEX_bufferMessage[3] = 0x02;
                HEX_bufferMessage[4] = 0x03; 
                HEX_bufferMessage[5] = 0x00;
                HEX_bufferMessage[6] = 0x00; 
                HEX_bufferMessage[7] = 0xD1; 
                HEX_bufferMessage[8] = 0xD1; 
                HEX_bufferMessage[9] = 0x00;
                HEX_bufferMessage[10] = 0x00;
                HEX_bufferMessage[11] = 0xF7;

        retorno = send(sckSloMo, (const char*) HEX_bufferMessage, sizeof(HEX_bufferMessage), 0); 

                TextRetorno.Format("%d", retorno);
                AfxMessageBox(TextRetorno); // value = 12

                if (retorno == SOCKET_ERROR)
                {
                    AfxMessageBox("Error Send!! =[ ");
                    return;
                }



            return;

            }

1 个答案:

答案 0 :(得分:1)

流行测验。有什么区别:

int n = 0x0F;

int n = 15;

如果你说“什么都没有,”你是对的。

分配整数值时,为八进制指定0x00,或为十进制指定任何内容,不会对实际存储的内容产生任何影响。这对程序员来说只是方便。这些是我们正在谈论的整数变量 - 它们只存储数字数据。他们不存储或关心基数。实际上,您可能会惊讶地发现,当您将数值赋给整数变量时,实际存储的内容不是十进制或十六进制,甚至是八进制 - 它是二进制的。

由于您将这些值存储为unsigned char,而charunsigned或其他)实际上只是一个整数类型,那么您正在做的事情很好:

HEX_bufferMessage[0] = 0xF0;
HEX_bufferMessage[1] = 0x15;
HEX_bufferMessage[2] = 0x31;

但你的问题毫无意义:

  

任何人都知道使用unsigned char数组是否正确   存储十六进制??