我想得到这个结果:
static uint32_t const m_deadbeef = 0x4c414c41 ; //this hex is "LALA"
从这个输入:
char data[]="LALA";
所以我需要将 data
放在 unint32_t
中,这样它看起来就像第一行。
我将如何有效地做到这一点?
最佳答案
这很简单,您只需要获取字符值并将它们组合起来:
uint32_t uint_from_string(const char *s)
{
uint32_t x = 0;
for (int i = 0; *s != '\0' && i < 4; ++i)
{
x <<= 8;
x |= (uint32_t) *s++;
}
return x;
}
如果你这样使用它:
const uint32_t m_deadbeef = uint_from_string("LALA");
您将在其中获得值 0x4c414c41
。
此外,请注意这里没有“以十六进制表示”,数字也以十进制打印(它是 1279347777
)。数字不是十六进制的,只是它们在打印时的表示形式。
关于c - 将字符串作为十六进制放入 Uint32_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44156910/