0

我想将一个数组转换为uint8_tNesCuint32_t的a 。

有谁知道我该怎么做?

4

3 回答 3

2

我找到的解决方案是使用该功能:

void * memcpy ( void * destination, const void * source, size_t num );

还有这个功能:

void * memset ( void * ptr, int value, size_t num );

在我的代码中,我使用 memcpy,它工作正常。感谢所有回答我问题的人

于 2012-11-08T08:52:26.003 回答
0

如果要将uint8_t源中的单曲转换为uint32_t目标中的单曲,其实很简单。只需创建目标数组,并在循环中复制值:

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];
于 2012-09-19T09:33:55.327 回答
0

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

如果您有四个 8 位整数,则可以将它们连接成一个 32 位,如下所示:

const uint8_t  a = 1, b = 2, c = 3, d = 4;
const uint32_t big = (a << 24) | (b << 16) | (c << 8) | d;

这样对它们进行排序,其中字母表示来自上述变量的位:

0xaabbccdd

换句话说,a被认为是最高有效字节,d也是最低字节。

如果您有一个数组,您当然可以在循环中执行此操作:

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有四个值。

于 2012-09-19T09:35:42.193 回答