在 C 中将数组映射到名称

问题描述 投票:0回答:1

不确定如何表达,但我会尝试一下

我有一组像这样定义的数组,它们是C风格的图像。

static uint8_t wsymbol_0043_mostly_cloudy[] PROGMEM  = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

还有一组用于在数组中收集 C 风格图像的名称

 String* symbols[] = {
"wsymbol_0001_sunny",
"wsymbol_0002_sunny_intervals",
"wsymbol_0003_white_cloud"};

现在使用 C 我希望能够将这里的符号数组映射到 C 风格图像集?但我不知道如何在 C 中做到这一点。

我需要将数组 wsymbol_0001_sunny[] 传递给方法,而不是名称 wsymbol_0001_sunny?

答案是C中的“map”函数吗?

arrays c dictionary
1个回答
0
投票

C 中不支持字典,因此您必须自己实现字典或借用其他人的实现。

由于图像的名称已经有了标识符,因此您可以将原始图像数据放入嵌套数组中,如下所示:

static uint8_t image_data[][] PROGMEM = {
    {/* wsymbol_0001_sunny */}, 
    {/* wsymbol_0002_sunny_intervals */}, 
    {/* ... */}
}
char *symbols[] = {
    "wsymbol_0001_sunny",
    "wsymbol_0002_sunny_intervals",
    "wsymbol_0003_white_cloud"
};

然后您可以通过图像名称访问图像,如下所示:

image_data[atoi(symbols[1]+8)];
© www.soinside.com 2019 - 2024. All rights reserved.