我怎樣才能得到這樣的陣列,通過一次發送呢?我 已經有一個打印功能,可以發送例如:char property [] =「property」作爲一個字符串。
範圍[0 ... 350]中的值不適合單個字節,但可以使用字節對編碼這些值。
一個例子
short int x = 300; /* 0x012C */
=
unsigned char arr[] = {0x01, 0x2C};
或
short int x[] = {0x000a, 0x0028, 0x0032, 0x005a, 0x0064, 0x00c8, 0x012c, 0x00f0, 0x0104, 0x000a, 0x0028, 0x0032, 0x005a, 0x0064, 0x00c8, 0x012c, 0x00f0, 0x0104, 0x012c, 0x0014};
=
unsigned char arr[] = {0x00, 0x0a, 0x00, 0x28, 0x00, 0x32, 0x00, 0x5a, 0x00, 0x64, 0x00, 0xc8, 0x01, 0x2c, 0x00, 0xf0, 0x01, 0x04, 0x00, 0x0a, 0x00, 0x28, 0x00, 0x32, 0x00, 0x5a, 0x00, 0x64, 0x00, 0xc8, 0x01, 0x2c, 0x00, 0xf0, 0x01, 0x04, 0x01, 0x2c, 0x00, 0x14};
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
short int ADCvalue[] = {10, 40, 50, 90, 100, 200, 300, 240, 260, 10, 40, 50, 90, 100, 200, 300, 240, 260, 300, 20};
size_t sz = sizeof(ADCvalue)/sizeof(*ADCvalue);
unsigned char *arr = malloc(sz * 2);
if (arr == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
/* Encode */
for (size_t i = 0; i < sz; i++) {
arr[i * 2 + 0] = (unsigned char)(ADCvalue[i] >> 8);
arr[i * 2 + 1] = (unsigned char)(ADCvalue[i] & 0xFF);
}
/* Send array */
/* .. */
/* Decode */
for (size_t i = 0; i < sz; i++) {
printf("%d\n", (arr[i * 2] << 8) | (arr[i * 2 + 1]));
}
return 0;
}
爲什麼不使用json? – bigbounty
我通過短信發送數據,所以我不能通過json實際發送數據,我想 –
一些未經測試的代碼,你可能會爲此任務工作:'for(i = 0; i <20; i ++ ){sprintf(tempstr,「%d」,ADCvalue [i]);的strcat(sendval,tempstr);的strcat(sendval, 「」); } sendval [strlen(sendval)-1] ='\ 0';' –