将字符数组转换为整型指针

3

我有一个字符串对象叫做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);
    }       
 }

这部分内容运行良好。

现在我想调用一个需要传递指向映射字符在5x7 LED矩阵上显示所需位值数组的整数指针的函数。

通常情况下,我可以调用Display(H) (void Display(int Array[])),然后一切正常。然而,我想使用字符串数组,以便可以自动完成。问题是,在使用H时,它通常被视为整数指针,工作得很好。存储区域包含不是指针的char,这会创建问题。

我已尝试各种转换方式,但似乎都失败了。这样做可能吗?

以下是我的尝试:

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 显示的位标志。您需要编写一个转换例程,将字符转换为具有正确值的数组。最简单的方法是使用转换表,因此您可以使用字符值进行索引,并返回正确值的静态常量数组。 - Some programmer dude
为什么不直接用int Storage[?]替换char Storage[?]呢? 你的问题真的让我很困惑,我不知道你想做什么。 - KoKuToru
在这个上下文中,char 的大小是多少,int 的大小是多少?Display() 函数是否使用其 ASCII 值显示每个 char - vvnraman
`int A[] = {0x1B, 0x15, 0xE, 0xE, 0x0, 0xE, 0xE, 0xE};Display(A);`这里的预期输出是什么? - Bok McDonagh
1个回答

0
int和char的大小不同,int(通常)是char大小的四倍,因此当您获取数组中特定char的指针值时,您还将复制后面的三个char到int中。这可能是您输出混乱的原因。请尝试以下操作:
    int i = (Storage[idx])
    int * ptrI = &i;//now ptrI points to the single integer which has been copied.

如果您想指向多个整数,您需要定义一个整数数组(它比您的字符数组小四倍)- 确保您的大小是正确的。除此之外,我无法提供更多帮助,因为您的解释不清楚。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接