我正在尝试使用 Andrew Grant 在回答这个问题时建议的 LSB 查找方法:Position of least significant bit that is set
但是,它会导致段错误。这是一个演示问题的小程序:
#include <iostream>
typedef unsigned char Byte;
int main()
{
int value = 300;
Byte* byteArray = (Byte*)value;
if (byteArray[0] > 0)
{
std::cout<< "This line is never reached. Trying to access the array index results in a seg-fault." << std::endl;
}
return 0;
}
我究竟做错了什么?
我读过在 C++ 中使用“C-Style”类型转换不是一个好习惯。我应该改用
reinterpret_cast<Byte*>(value)
吗?但是,这仍然会导致段错误。 最佳答案
用这个:
(Byte*) &value;
您不需要指向地址300的指针,而想要指向存储300的指针。因此,您使用 address-of 运算符
&
来获取 value
的地址。关于c++ - 在 C++ 中将 int 转换为字节数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5250609/