我想在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]
有没有办法重新解释输入字符串以避免任何循环或复制?
答案 0 :(得分:-1)
解决方案:
uint32_t *dataByWord = reinterpret_cast<uint32_t*>(str.c_str());