2012-11-04 49 views
3

我有一个字符串对象调用Message被给予一个字符串,如:转换字符数组为int指针

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不是指针,这会产生问题。

我试过各种转换方式,但都似乎失败。这甚至有可能吗?

这是我曾尝试:

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); 

我可能做一些愚蠢的,但我无法看到它。

+0

C和C++中的字符是ASCII值,所以字符“A”是值“65”,不能用作LED显示位标志。您必须创建一个转换例程,它需要一个字符并将其转换为具有正确值的数组。最简单的方法是创建一个转换表,因此您可以使用字符值对其进行索引,并获取正确值的静态常量数组。 –

+0

为什么不用'int Storage [?]'替换'char Storage [?]'? 你的问题真的让我困惑,我不知道你想做什么.. – KoKuToru

+0

在这种情况下,char的大小和int的大小是多少?并且Display()函数是否使用ASCII值显示每个字符? – vvnraman

回答

0

int和char的大小是不同的,int是(通常)是char大小的四倍,所以当你在数组中指定一个特定的char指针值时,你也复制了以下三个字符进入整数。这可能是你的输出结果混乱的原因。请尝试以下操作:

int i = (Storage[idx]) 
    int * ptrI = &i;//now ptrI points to the single integer which has been copied. 

如果你想指向一个以上的整数,你需要定义一个整型数组(这是比你的字符数组小四倍) - 确保你的尺寸是正确的。除此之外,我不能帮助,因为你的解释不清楚。