gpt4 book ai didi

arrays - 静态 uint8_t 数组的输入过程和类型

转载 作者:行者123 更新时间:2023-12-02 13:44:08 26 4
gpt4 key购买 nike

我目前正在尝试在 Arduino IDE 中将整数变量转换为静态 uint8_t 数组的值。

我正在使用:

#include <U8x8lib.h>

我确实知道 uint8_t 的行为与字节类型类似。

目前,数组有一个设定值:

static uint8_t hello[] = "world";

从我的角度来看,“world”看起来像一个字符串,所以我想我应该从创建一个字符串变量开始:

String world = "world";
static uint8_t hello[] = world;

这不起作用并给了我错误:

initializer fails to determine size of 'hello'

如果我这样做,但将“world”更改为如下所示的 int...

int world = 1;
static uint8_t hello[] = world;

我遇到同样的错误:

initializer fails to determine size of 'hello'

我已经通过以下过程成功将 uint8_t 数组转换为字符串:

static uint8_t hello[] = "world";
String helloconverted = String((const char*)hello);

我不明白以下内容:

  1. uint8_t 数组如何具有类似字符串的输入并且可以正常工作,但在涉及变量时却无法正常工作

  2. 如何创建字符串变量作为 uint8_t 数组的输入

  3. 如何创建 int 变量作为 uint8_t 数组的输入

预先感谢您的帮助。

最佳答案

How a uint8_t array can have a string-like input and work fine, but not when a variable is involved

字符串文字本质上是一个以 null 结尾的字符数组。所以

static uint8_t hello[] = "world";

本质上是

static uint8_t hello[] = {'w','o','r','l','d','\0'};

这也是普通的数组复制初始化,所需的大小是根据值自动推导出来的,这就是为什么你可以使用 [] 而不是 [size]

How to create a int variable as the input for the uint8_t array

由于 int 的大小在编译时已知,因此您可以创建一个 int 大小的数组,并将 int 值按字节复制到其中字节与memcpy:

int world = 1;
static uint8_t hello[sizeof(world)];
memcpy(hello, &world, sizeof(hello));

How to create a string variable as the input for the uint8_t array

您需要事先知道String的长度,以便创建一个足够大的数组来容纳String值:

String world = "Hello"; // 5 chars
static uint8_t hello[5];
world.toCharArray((char *)hello, sizeof(hello));

根据您的需要,您可能还想处理终止 null。

关于arrays - 静态 uint8_t 数组的输入过程和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com