静态uint8_t数组的输入过程和类型
Input process and type for static uint8_t array
我目前正在尝试将整数变量转换为 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);
我不明白以下内容:
uint8_t 数组如何具有类似字符串的输入并正常工作,但在涉及变量时却不行
如何创建字符串变量作为 uint8_t 数组的输入
如何创建一个 int 变量作为 uint8_t 数组的输入
在此先感谢您的帮助。
How a uint8_t array can have a string-like input and work fine, but
not when a variable is involved
字符串文字本质上是一个以空结尾的字符数组。所以
static uint8_t hello[] = "world";
本质上是
static uint8_t hello[] = {'w','o','r','l','d','[=11=]'};
这也是一个普通的数组复制初始化,所需的大小是从值中自动推导出来的,这就是为什么你可以使用 [] 而不是 [size]
How to create a int variable as the input for the uint8_t array
由于 int
的大小在编译时已知,您可以创建一个大小为 int
的数组,然后使用 memcpy
逐字节复制 int
值:
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。
我目前正在尝试将整数变量转换为 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);
我不明白以下内容:
uint8_t 数组如何具有类似字符串的输入并正常工作,但在涉及变量时却不行
如何创建字符串变量作为 uint8_t 数组的输入
如何创建一个 int 变量作为 uint8_t 数组的输入
在此先感谢您的帮助。
How a uint8_t array can have a string-like input and work fine, but not when a variable is involved
字符串文字本质上是一个以空结尾的字符数组。所以
static uint8_t hello[] = "world";
本质上是
static uint8_t hello[] = {'w','o','r','l','d','[=11=]'};
这也是一个普通的数组复制初始化,所需的大小是从值中自动推导出来的,这就是为什么你可以使用 [] 而不是 [size]
How to create a int variable as the input for the uint8_t array
由于 int
的大小在编译时已知,您可以创建一个大小为 int
的数组,然后使用 memcpy
逐字节复制 int
值:
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。