У меня есть массив символов, который представляет GUID как байты (а не как символы), но мне нужно отменить половину массива. Это произошло потому, что я использовал sscanf, чтобы преобразовать GUID строку в массив символов (который представляет собой байт) с помощью:Как изменить массив символов
sscanf(strguid,"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
,&arr[0],&arr[1],
,&arr[2],&arr[3],....,&arr[15]);
Массив у меня есть, например:
2EC5D8AA85E74B5E872462155EAA9D51
и я должен обратить его так что это даст правильный идентификатор GUID:
AAD8C52EE7855E4B872462155EAA9D51
то, что я пробовал следующее:
unsigned int temp;
memcpy(&temp,&arr[0],sizeof(char));
memcpy(&arr[0],&arr[3],sizeof(char));
memcpy(,&arr[3],&temp,sizeof(char));
И так далее. (Второй с третьим, пятый с шестой и седьмой с восьмым)
Есть ли более простой способ сделать это?
Вам нужно токенизировать и отменить каждый токен, а не весь массив. – user1095108
Можете ли вы, как вы сохранили массив, который нужно обратить вспять? Между ними есть «-»? – legends2k
у него нет. Ты прав. Я просто хотел объяснить обратный порядок. Это произошло потому, что я использовал sscanf для преобразования if from string в char array, используя «% 02x% 02X ...-% 02x% 02x-% 02x% 02x-% 02x% 02x ...» – user1016179