我想将uint8_t数组转换为uint32_t in NesC。
有人知道我是怎么做到的吗?
发布于 2012-11-08 08:52:26
我找到的解决方案是使用该函数:
void * memcpy ( void * destination, const void * source, size_t num );还有以下职能:
void * memset ( void * ptr, int value, size_t num );在我的代码中,我使用memcpy,它运行得很好。感谢所有回答我问题的人
发布于 2012-09-19 09:33:55
如果您想将源中的单个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-19 09:35:42
你的标题提到字符串,但你的问题文本没有。这是令人困惑的。
如果您有四个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有四个值。
https://stackoverflow.com/questions/12491556
复制相似问题