将std :: string重新解释为unsigned int数组

时间:2017-05-26 12:19:49

标签: c++

我想在C(ARM平台)中实现类似的东西:

char a[] = {0xAA, 0xBB, 0xCC, 0xDD, 0x11, 0x22, 0x33, 0x44};
uint32_t *aUint = (uint32_t *)a;

然后我可以使用:

printf("%X", aUint[1]);

,结果将是:

0x11223344

现在我想在C ++中做同样的事情,但是当我尝试做这样的事情时(假设字符串长度为%4 == 0):

std::string str("some human readable    ");
uint32_t *dataByWord = reinterpret_cast<uint32_t>(&str);

我得到输出:

error: cast from ‘const std::__cxx11::basic_string<char>*’ to ‘uint32_t {aka unsigned int}’ loses precision [-fpermissive]

有没有办法重新解释输入字符串以避免任何循环或复制?

1 个答案:

答案 0 :(得分:-1)

解决方案:

uint32_t *dataByWord = reinterpret_cast<uint32_t*>(str.c_str());