如何扭转一系列字符
How to reverse an array of chars
我有一个char数组,该数组代表一个guid为字节(不是字符),但我必须逆转阵列的一半。发生这种情况是因为我使用SSCANF将GUID字符串转换为char数组(代表字节),使用:
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));
等等。(第二,第三,第六和第七的第五,第八的第五)
有一个更简单的方法吗?
如果我理解您的问题正确,您需要更改GUID
struct
typedef struct {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
byte Data4[ 8 ];
} GUID;
您可以尝试此
std::reverse(guid_, guid_ + 4);
std::reverse(guid_ + 4, guid_ + 6);
std::reverse(guid_ + 6, guid_ + 8);
但我更喜欢像这样更改SSCANF格式
const char *string_ = "AAD8C52E-E785-5E4B-8724-62155EAA9D51";
GUID guid_;
sscanf(string_, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
&guid_.Data1, &guid_.Data2, &guid_.Data3,
&guid_.Data4[0], &guid_.Data4[1], &guid_.Data4[2], &guid_.Data4[3], &guid_.Data4[4], &guid_.Data4[5], &guid_.Data4[6], &guid_.Data4[7]);
建议您需要检查输入字符串长度,以避免较短的字符串解析
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 输入验证以筛选出字符、字符串和一系列整数
- 跟踪多个文件中一系列字符的频率
- 为什么要为指针返回类型返回一系列字符?
- 初始化一系列字符
- 当返回一系列字符或指针到char文字时的区别
- 如何用指针打印一系列字符
- 我可以使用STD ::复制将数据的位模式从整数向量复制到一系列未签名的字符
- 如何扭转一系列字符
- 我怎样才能同时将一系列字符值读取为字符和整数并进行比较