我正在编写一个非常简单的代码来测试c ++上的Hex数据
int main()
{
unsigned char bytestosend[4] = {0xB5, 0x62, 0x06, 0x08};
cout << &bytestosend << endl;
}
终端上的数据是:0xbfa1ef58
怎么会发生这种情况? 当我删除'&amp;'它给了我奇怪的符号
答案 0 :(得分:5)
使用&
时,它会输出数组的地址,否则会将其打印为ASCII数据。
答案 1 :(得分:1)
'&amp;'在这种情况下意味着'地址'。您正在内存中打印bytestosend
的位置而不是内容。
删除'&amp;'你也不会得到你想要的东西。现在,流插入运算符(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;