【问题标题】:What kind of array is this in C++? [closed]在 C++ 中这是什么类型的数组? [关闭]
【发布时间】:2016-05-08 18:11:31
【问题描述】:

我注意到这是一个 C++ 数组,但我不知道它在存储什么以及如何存储。我使用了 Arduino 图像转换器。我忘记了来源,但我记得它是转换图像以显示在 Arduino TFT 屏幕上。有人可以给我提示一下编码的名称是什么或者它是什么,所以我可以进一步研究它:(顺便说一句,这只是代码的摘录。)

// Generated by  : ImageConverter 565 v1.1
// Generated from: 4-14-12-063-copy.jpg
// Time generated: 5/8/2016 12:57:28 PM
// Dimensions    : 484x324 pixels
// Size          : 313,632 Bytes

#include <avr/pgmspace.h>

prog_uint16_t 4-14-12-063-copy[0x26490] PROGMEM ={
0xC638, 0xD6B9, 0xC617, 0xC637, 0x844F, 0xA573, 0x7C8F, 0xC6B8, 0xFFDD, 0xEF3B, 0xCDF6, 0x9C2F, 0x838D, 0x51E6, 0x4A47, 0x4A67,   // 0x0010 (16)
0x7BCD, 0xB5B5, 0xCE37, 0xA513, 0xC637, 0xCE57, 0xBD75, 0x5249, 0x3184, 0x4A47, 0x736D, 0x83EF, 0x39E6, 0x2123, 0x2923, 0x18E2,   // 0x0020 (32)
0x2122, 0x2963, 0x1902, 0x18E1, 0x2964, 0x4247, 0x2984, 0x2122, 0x31A4, 0x39E5, 0x2964, 0x2964, 0x3164, 0x18A1, 0x18A1, 0x2943,   // 0x0030 (48)
0x31A5, 0x18C1, 0x10C1, 0x0880, 0x18E2, 0x1902, 0x10A1, 0x10A1, 0x10A1, 0x0880, 0x08A0, 0x1102, 0x1923, 0x10E2, 0x1081, 0x0860,   // 0x0040 (64)
0x0040, 0x0860, 0x08A1, 0x0881, 0x0880, 0x0880, 0x0880, 0x18E2, 0x18C2, 0x0020, 0x0860, 0x0840, 0x0020, 0x0020, 0x0000, 0x0040,   // 0x0050 (80)
0x0040, 0x08A0, 0x31E5, 0xA5B4, 0xA5B4, 0x9512, 0x5B8B, 0x3A87, 0x21C4, 0x2A25, 0x3246, 0x5B8B, 0x8CB0, 0x638C, 0x42A8, 0x4AC9,   // 0x0060 (96)
0x532A, 0x52E9, 0x4AC8, 0x7C4E, 0xA594, 0xADB4, 0x94D1, 0x73CD, 0x842F, 0x73CD, 0x7C4F, 0x740E, 0xB5F6, 0xE75C, 0xFFFF, 0xFFFF,   // 0x0070 (112)
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0080 (128)
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x0090 (144)
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,   // 0x00A0 (160)

【问题讨论】:

  • 这不是有效的 C++ 代码。
  • 我投票决定将此问题作为离题结束,因为它提出了一个不清楚的问题,声称某些东西是 C++ 在 C++ 中的语法无效。
  • cmets 告诉你它是从什么文件生成的,以及它是由什么程序生成的。
  • 也是今天生成的——你忘了你已经做了什么了吗?
  • 如果你google文件名你可以找到原图。

标签: c++ memory arduino lcd


【解决方案1】:

4-14-12-063-copy 在 C++ 中不是有效的变量/类型名称,数组声明类似于

typename  nameofarry[sizeofarry] = { optional initializer block };

因此,[] 之后的 PROGMEM 也不是有效的 C++,如果它完全可以编译,则它必须是某种专门用于嵌入式编程的非标准扩展。

但是,如果您要查找的是单词“十六进制”,那么数据看起来像 16 位十六进制数据,这与看起来像 prog_uint16_t 的预期类型相对应——这可能是一个无符号的 16 位整数。

更新:...根据代码中的注释,数据是从JPEG image生成的。

【讨论】:

  • 我本来打算自己写答案,但您不妨补充一下——根据代码的 cmets——它是 jpeg。
  • 数据不是 JPEG 图像。它是从 JPEG 图像生成的,但现在是另一种格式。
  • @interjay -- 当然,更新了措辞
猜你喜欢
  • 2022-01-21
  • 2013-08-15
  • 1970-01-01
  • 2013-03-14
  • 2015-02-18
  • 2016-04-12
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多