1

これは基本的な質問のようですが、SOのどこにも答えが見つかりません。

byteC/C++ にはデータ型がないことはわかっています。私はそれを知っていsizeof(char) == 1ます。

Android アプリから送信された、Pebble にそれぞれ 96 バイトの 12 の送信を保存しようとしています。

送信サイズに制限があるため、1枚ずつ送信しています。画像として読み取るために、最終的にメモリ内に連続したスペースを形成する必要があるため、それぞれを最後に「追加」する必要があります(1ピクセルあたり1ビット)。

私はこのようなことをしようとしています:

int transNum = 0;
uint8_t image[][] = new uint8t[12][12] //not sure about uint8_t, and I've forgotten how to do 'new' in C, I have to create just a pointer, and then malloc?

receivedHandler(DictionaryIterator *iter, void *context){
    Tuple *receivedImage = dict_find(iter, KEY_IMG);
    for (int i = 0; i < 12; i++) {
        image[transNum][i] =  receivedImage->value[i]->uint8_t;
    }
    transNum += 1; //this is in an implicit loop, since once done Pebble ACKs the transmission, and receivedHandler is called again by the next transmission
}

私は遠く離れていますか?

4

4 に答える 4

2

これに追加することの 1 つは、char. 純粋なバイトデータを扱う場合は、、、unsigned charまたはsigned charのようなものを使用します。uint8_tchar は 1 バイトですが、使用のためにデータが失われるのを見てきました。

于 2014-03-07T03:29:58.297 に答える
0

2回mallocする必要があると思います。

char** image = (char**)malloc(sizeof(char*)*12);
int i = 0;
for(; i < 12; ++i){
   image[i] = (char*)malloc(sizeof(char)*12);
}

その後、イメージを 2 次元配列として扱うことができます。

于 2014-03-07T02:57:46.290 に答える