我正在尝试使用 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/

10-15 16:55