0

我正在编写一个非常简单的代码来测试 C++ 上的十六进制数据

int main()
{
    unsigned char bytestosend[4] = {0xB5, 0x62, 0x06, 0x08};

    cout << &bytestosend << endl;
}

终端上的数据是:0xbfa1ef58

这怎么会发生?当我删除“&”时,它给了我奇怪的符号

4

2 回答 2

5

当您使用&它时,它会输出数组的地址,而当您不使用它时,它会将其打印为 ASCII 数据。

于 2013-05-27T13:50:43.870 回答
1

在这种情况下,“&”表示“地址”。您正在打印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;
于 2013-05-27T13:56:00.297 回答