memcpy(sCommand, "\x80\x52\x00\x00\x0B\x20\x08\x01\x01\x01\x01\x01", 12);看不懂,怎么转换

时间:2021-07-24 22:47:21
有一固定语句memcpy(sCommand, "\x80\x52\x00\x00\x0B\x20\x08\x01\x01\x01\x01\x01", 12);其中\x20\x08\x01\x01\x01\x01\x01"表示的是日期时间,20080101010101
现在我有一数组char sDateTime[14],里面存的内容是20080101010101,sDateTime相当于是传送来的变量,现在要怎么将sDateTime里面的值弄到上面?
memcpy(sCommand, "\x80\x52\x00\x00\x0B", 5);
memcpy(sCommand+5, sDateTime, 7);???????????????怎么写??

3 个解决方案

#1


20080101010101是字符串,以ASCII码保存的,形式是\X32\X30\X30\X38...
\x20\x08\x01\x01\x01\x01\x01是数字,所以你需要先把字符串转换到数字形式,然后才能取到

另外char sDateTime[14]不够存放20080101010101

#2


怎么写?

#3



char sCommand[100], sDateTime[] = "20080101010101";
memcpy(sCommand, "\x80\x52\x00\x00\x0B", 5);
int i;
for(i = 0; i < strlen(sDateTime); i += 2)
{
sCommand[5 + (i >> 1)] = ((sDateTime[i] - '0') << 4) + (sDateTime[i + 1] - '0');
}

#1


20080101010101是字符串,以ASCII码保存的,形式是\X32\X30\X30\X38...
\x20\x08\x01\x01\x01\x01\x01是数字,所以你需要先把字符串转换到数字形式,然后才能取到

另外char sDateTime[14]不够存放20080101010101

#2


怎么写?

#3



char sCommand[100], sDateTime[] = "20080101010101";
memcpy(sCommand, "\x80\x52\x00\x00\x0B", 5);
int i;
for(i = 0; i < strlen(sDateTime); i += 2)
{
sCommand[5 + (i >> 1)] = ((sDateTime[i] - '0') << 4) + (sDateTime[i + 1] - '0');
}