我想将一个数组转换为uint8_t
NesC中uint32_t
的a 。
有谁知道我该怎么做?
我找到的解决方案是使用该功能:
void * memcpy ( void * destination, const void * source, size_t num );
还有这个功能:
void * memset ( void * ptr, int value, size_t num );
在我的代码中,我使用 memcpy,它工作正常。感谢所有回答我问题的人
如果要将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];
您的标题提到了字符串,但您的问题文本没有。这令人困惑。
如果您有四个 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
有四个值。