将 std::string 重新解释为无符号的 int 数组

Reinterpreting std::string to unsigned int array

本文关键字:无符号 int 数组 解释 string std 新解释      更新时间:2023-10-16

我想在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]

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

解决方案:

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