将char数组转换为int指针

时间:2012-11-04 19:44:26

标签: c++ arduino

我有一个名为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);

我可能正在做些傻事,但我看不到它。

1 个答案:

答案 0 :(得分:0)

int和char的大小不同,int(通常)是char大小的四倍,所以当你在数组中获取特定char的指针值时,你也将以下三个chars复制到int。这可能是你的输出混乱的原因。请尝试以下方法:

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

如果要指向多个整数,则需要定义一个整数数组(比char数组小四倍) - 确保大小正确。除此之外我无能为力,因为你的解释不清楚。