我是指针的新手,我想做一个函数,将内存中的每个字节从 int
变量添加到 unsigned char
中的每个单元格。请看下面的代码
int main()
{
unsigned char buffer[4] = {0};
int number = 15
unsigned char *ptBuffer = &buffer;
return 0;
}
所以输出是
buffer[0]= 0,
buffer[1]= 0,
buffer[2]= 0,
buffer[3]= F
所以
number = 15 => 0x000F
最佳答案
不依赖别名(这可能会惹恼优化器)的可移植解决方案是使用 C++ 提供的一些位操作。如果你确定一个整数在你的机器上占用 4 个字节(但在生产代码中你真的不应该假设这一点,因为整数的大小是不确定的),它会像这样:
int x = ...;
unsigned char bytes[4] = {
(x >> 24) & 0xFF,
(x >> 16) & 0xFF,
(x >> 8) & 0xFF,
(x >> 0) & 0xFF,
};
>>
是按位右移。 &
是按位与(1 and 0 = 0, 1 and 1 = 1, 0 and 1 = 0)。
然后您输出它们,例如通过 std::cout << (int)bytes[0] << ...
.
关于c++ - C++中的指针和字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245939/