【发布时间】:2012-11-04 19:44:26
【问题描述】:
我有一个名为Message 的字符串对象,它被赋予一个字符串,例如:
Message = "Hello";
然后将每个字符存储在一个字符数组中:
void Load()
{
Message.toUpperCase(); // Makes all the characters uppercase
for (int T = 0; T < Message.length(); T++)
{
Storage[T] = Message.charAt(T);
}
}
这部分工作正常。
现在我想调用一个函数,该函数需要传递一个指向数组的整数指针,该数组映射出在 5*7 LED 矩阵上显示字符所需的位值。
通常我可以打电话给Display(H) (void Display(int Array[])),就可以了。但是,我想使用字符串数组,以便它可以自动完成。问题是,当通常使用 H 时,它被视为整数指针,并且效果很好。存储存储不是指针的字符,这会产生问题。
我尝试了各种转换它的方法,但似乎都失败了。这甚至可能吗?
这是我尝试过的:
char to int:
int w = int(Storage[L]);
int* ww = &w;
这编译得很好,但是输出全错了。所以我不太确定如何更进一步。
澄清一下,这是可行的:
int A[] = {0x1B, 0x15, 0xE, 0xE, 0x0, 0xE, 0xE, 0xE};
Display(A);
但这不是:
String[L] = A;
int w = int(Storage[L]);
int* ww = &w;
Display(ww);
我可能在做一些傻事,但我看不到。
【问题讨论】:
-
C和C++中的字符是ASCII值,所以字符
'A'就是65的值,不能用作LED显示屏的位标志。您必须创建一个转换例程,该例程接受一个字符并将其转换为具有正确值的数组。最简单的方法是有一个转换表,因此您可以使用字符值对其进行索引并获取正确值的静态常量数组。 -
为什么不把
char Storage[?]替换成int Storage[?]呢?你的问题让我很困惑,我不知道你想做什么.. -
在这种情况下
char和int的大小是多少?Display()函数是否使用其 ASCII 值显示每个字符? -
int A[] = {0x1B, 0x15, 0xE, 0xE, 0x0, 0xE, 0xE, 0xE}; Display(A);这里的预期输出是什么?