首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C中将char*转换为uint32_t?

如何在C中将char*转换为uint32_t?
EN

Stack Overflow用户
提问于 2022-03-11 09:32:03
回答 1查看 345关注 0票数 0

我有一个char*数组,定义为char *data_ptr = "ABCDEFGHIJKLMNOPQRSTUVWX"。另外,我有一个声明为static uint32_t wr_buff[32]的写缓冲区。

我迭代地从数组中提取4个字节,并将它们放入定义为char substr[4]的char子字符串中。

我想要做的是将这4个字节放入写缓冲区,而不改变它们的值,但是我首先需要将子字符串的每个元素转换为uint32_t。

我试过以下几句话,但没有奏效:

代码语言:javascript
运行
复制
wr_buffer = (uint32_t)substr[0] << 24 | (uint32_t)substr[1] << 16 | (uint32_t)substr[2] << 8 | (uint32_t)substr[3];

如何将这4个字节保存到uint32_t缓冲区中?

EN

回答 1

Stack Overflow用户

发布于 2022-03-11 11:33:15

你为了复杂的事情:

代码语言:javascript
运行
复制
char *data_ptr = "ABCDEFGHIJKLMNOPQRSTUVWX";
static uint32_t wr_buff[32];
char *posInEntry ;
char *posInOutput;

posInEntry = data_ptr;
posInOutput = (char *) wr_buff;
while (posInEntry < strlen(data_ptr)) {
    posInOutput[3] = posInEntry++;
    posInOutput[2] = posInEntry++;
    posInOutput[1] = posInEntry++;
    posInOutput[0] = posInEntry++;
    posInOutput += 4;
}

注意(感谢@ user16217248指出了几个错误):

在stdint.h

  • strlen中定义了
  • uint32_t,在string.h.h

中定义了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71436389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档