首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Array转换为String Nesc

将Array转换为String Nesc
EN

Stack Overflow用户
提问于 2012-09-19 09:05:33
回答 3查看 732关注 0票数 0

我想将uint8_t数组转换为uint32_t in NesC

有人知道我是怎么做到的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-08 08:52:26

我找到的解决方案是使用该函数:

代码语言:javascript
复制
void * memcpy ( void * destination, const void * source, size_t num );

还有以下职能:

代码语言:javascript
复制
void * memset ( void * ptr, int value, size_t num );

在我的代码中,我使用memcpy,它运行得很好。感谢所有回答我问题的人

票数 2
EN

Stack Overflow用户

发布于 2012-09-19 09:33:55

如果您想将源中的单个uint8_t转换为目标中的单个uint32_t,这实际上非常简单。只需创建目标数组,并在循环中复制值:

代码语言:javascript
复制
uint8_t *source;
size_t   source_count;  /* Number of entries in the source */

uint32_t *dest = malloc(sizeof(*dest) * source_count);
for (int i = 0; i < source_count; i++)
    dest[i] = source[i];
票数 0
EN

Stack Overflow用户

发布于 2012-09-19 09:35:42

你的标题提到字符串,但你的问题文本没有。这是令人困惑的。

如果您有四个8位整数,您可以将它们合并成一个32位的整数,如下所示:

代码语言:javascript
复制
const uint8_t  a = 1, b = 2, c = 3, d = 4;
const uint32_t big = (a << 24) | (b << 16) | (c << 8) | d;

这类命令如下所示,其中字母表示来自上述变量的位:

代码语言:javascript
复制
0xaabbccdd

换句话说,a是最重要的字节,而d是最小的字节。

如果您有一个数组,当然可以在一个循环中这样做:

代码语言:javascript
复制
uint32_t bytes_to_word(const uint8_t *bytes)
{
   size_t i;
   uint32_t out = 0;

   for(i = 0; i < 4; ++i)
   {
     out <<= 8;
     out |= bytes[i];
   }
   return out;
}

以上假设bytes有四个值。

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

https://stackoverflow.com/questions/12491556

复制
相关文章

相似问题

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