gpt4 book ai didi

c++ - 如何将十六进制存储在数组中? C++ 多线程

转载 作者:行者123 更新时间:2023-11-28 07:19:52 25 4
gpt4 key购买 nike

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

这就是我使用数组的方式。不知道对不对。

 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;

}

最佳答案

突击测验。有什么区别:

int n = 0x0F;

和:

int n = 15;

如果您说“没什么”,那么您是对的。

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

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

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

但是你的问题没有意义:

Anyone knows if using an array of unsigned char is the right way to store hexadecimals??

关于c++ - 如何将十六进制存储在数组中? C++ 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com