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

この部分は正常に動作します。

ここで、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);

私はおそらく何かばかげたことをしているのですが、私には見えません。

4

1 に答える 1

0

int と char のサイズは異なります。int は (通常) char の 4 倍のサイズであるため、配列内の特定の char のポインター値を取得すると、次の 3 つの char も int にコピーされます。これがおそらく、出力が台無しになる理由です。次のことを試してください。

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

複数の整数を指す場合は、整数配列 (char 配列の 4 分の 1) を定義する必要があります。サイズが正しいことを確認してください。あなたの説明が不明確なので、これ以上はどうしようもありません。

于 2012-11-09T09:58:15.107 に答える