gpt4 book ai didi

c - 如何在 C 中存储字节数组?

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:01 25 4
gpt4 key购买 nike

这似乎是一个基本问题,但我无法在任何地方找到答案。

我知道 C/C++ 没有 byte 数据类型。我知道 sizeof(char) == 1

我试图在 Pebble 上存储 12 个传输,每个传输 96 个字节,从我的 Android 应用程序传输。

由于传输大小的限制,我一次发送一个。每一个都应该“附加”到最后一个,因为它们最终应该在内存中形成顺序空间,以便作为图像读取(每个像素一位)。

我正在尝试做这样的事情:

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
}

我离得还很远吗?

最佳答案

你可以分配12*96字节的12行96列的连续内存

char*   image = (char*)malloc(sizeof(char)*12*96);

另外,一个全局数组就可以了

char image[12][96];

据我了解,您正在逐行接收数据,即一次接收 96 个字节:

char rcvd_data[96]={0};

并像这样访问/设置::

for(row=0;row<12;row++) //to point to the row (0-11 rows)
{
rcvd_data= recv_function(); //whatever your recv function is
for(col=0;col<96;col++) //to point to the col in that row (0-95 col)
{
*(image + row*96 + col)= rcvd_data[col]//whatever value you want to assign
}
}

并一次传输所有 96 个字节:

for(row=0;row<12;row++) //to point to the row (0-11 rows)
{
rcvd_data= recv_function(); //whatever your recv function is
memcopy((image + row*96), rcvd_data, 96);
}

关于c - 如何在 C 中存储字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com