EDIT: Итак, теперь, когда я понял проблему, вот ответ (я думаю, ^^).
Его проблема в том, что он получит дату как символ * (например, «150424»), и он хочет, чтобы произвести из этих символов => «\ x15» «\ x04» «\ x24»
Здесь как я бы это сделать:
int i = 0;
char myStr[23] = "\x9F\x02\x06\x00\x00\x00\x07\x00\x00\x9F\x03\x06\x00\x00\x00\x00\x00\x00\x9A\x03\x00\x00\x00";
// get today's date
char date[6] = "150424";
int converted = strtol(date, NULL, 16);
myStr[20] = (converted & 0xFF0000) >> 16;
myStr[21] = (converted & 0xFF00) >> 8;
myStr[22] = converted & 0xFF;
printf("[%x", myStr[i] & 0xff);
for (i=1 ; i<23 ; ++i) printf(", %x", myStr[i] & 0xff);
printf("]\n");
return 0;
Выход
[9f, 2, 6, 0, 0, 0, 7, 0, 0, 9f, 3, 6, 0, 0, 0, 0, 0, 0, 9a, 3, 15, 4, 24]
Просто для информации:
Вы говорите, что вам не нужно конвертировать 15 до 0x0F, но это звучит странно, потому что 0x15 не имеет ничего общего с 15 со дня потом ...
Так же в случае, если вы хотите поставить вместо десятичной :
char date[6] = "150424";
int converted = strtol(date, NULL, 10);
myStr[20] = (converted/10000);
myStr[21] = (converted/100) % 100;
myStr[22] = converted % 100;
Тогда выход становится:
[9f, 2, 6, 0, 0, 0, 7, 0, 0, 9f, 3, 6, 0, 0, 0, 0, 0, 0, 9a, 3, f, 4, 18]
Надежда, которая помогла
Do у ou знать заранее, как долго будет строка, которую вы хотите отправить? Кроме того, вы можете взглянуть на строку формата% x (http://www.cplusplus.com/reference/cstdio/printf/) – Attilio
Итак, для даты, которую вы хотите, [двоично-кодированный десятичный] (http://en.wikipedia.org/wiki/Binary-coded_decimal)? –
'24' будет' \ x18', не так ли? А '15' будет' \ x0F'. Что вы пробовали? – Eregrith