c - 将字符串作为十六进制放入 Uint32_t

标签 c

我想得到这个结果:

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/

相关文章:

c++ - 从 std::fstream 获取 FILE*

c - Valgrind 在每个程序上报告 "Conditional jump or move depends on uninitialised value(s)"

c++ - 是否可以为某个表达式#define 两个单词,而不仅仅是一个单词?

c - 我们如何从命令行构建一个 visual studio 项目

c - 初学者关于C程序函数调用栈、序列点(sequencing)的疑问

C 字符数组打印,使用子程序

使用for和scanf写入数据的C函数

多重定义的 C 链接错误

c - 使用数组计算第二人称最终结果时出错

c - 简单的C语言计算器程序