我正在编写一个非常简单的代码来测试 C++ 上的十六进制数据
int main()
{
unsigned char bytestosend[4] = {0xB5, 0x62, 0x06, 0x08};
cout << &bytestosend << endl;
}
终端上的数据是:0xbfa1ef58
这怎么会发生?当我删除“&”时,它给了我奇怪的符号
当您使用&
它时,它会输出数组的地址,而当您不使用它时,它会将其打印为 ASCII 数据。
在这种情况下,“&”表示“地址”。您正在打印bytestosend
内存中的位置而不是它的内容。
删除那个'&',你也不会得到你想要的。现在流插入运算符 ( operator >>
) 看到了一个char
数组,所以它会尝试打印你的数组,就好像它是一个字符串一样。您的数组不是以空值结尾的,因此输出可能会持续一段时间。
如果要打印bytestosend
十六进制的所有四个元素,请使用以下内容:
std::cout.flags (std::ios::hex | std::ios::showbase);
std::cout << int(bytestosend[0]) << ", "
<< int(bytestosend[1]) << ", "
<< int(bytestosend[2]) << ", "
<< int(bytestosend[3]) << std::endl;