使用 sscanf 解析 UUID
Parsintg UUID using sscanf
我正尝试通过 sscanf 将 UUID 字符串解析为 std::array,但出了点问题,我无法确定问题所在:
std::array<uint8_t, 16> arr{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
sscanf("00112233-4455-6677-8899-AABBCCDDEEFF",
"%hhx%hhx%hhx%hhx-%hhx%hhx-%hhx%hhx-%hhx%hhx-%hhx%hhx%hhx%hhx%hhx%hhx",
&arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7],
&arr[8], &arr[9], &arr[10], &arr[11], &arr[12], &arr[13], &arr[14], &arr[15]
);
数组之后包含0x33,0xab,0x89,0x67,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
。
知道出了什么问题吗?
您需要将宽度 2
指定为:
std::sscanf("00112233-4455-6677-8899-AABBCCDDEEFF",
"%2hhx%2hhx%2hhx%2hhx-%2hhx%hhx-%2hhx%2hhx-%2hhx%2hhx-"
"%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx",
&arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7],
&arr[8], &arr[9], &arr[10], &arr[11], &arr[12], &arr[13], &arr[14], &arr[15]
);
我正尝试通过 sscanf 将 UUID 字符串解析为 std::array,但出了点问题,我无法确定问题所在:
std::array<uint8_t, 16> arr{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
sscanf("00112233-4455-6677-8899-AABBCCDDEEFF",
"%hhx%hhx%hhx%hhx-%hhx%hhx-%hhx%hhx-%hhx%hhx-%hhx%hhx%hhx%hhx%hhx%hhx",
&arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7],
&arr[8], &arr[9], &arr[10], &arr[11], &arr[12], &arr[13], &arr[14], &arr[15]
);
数组之后包含0x33,0xab,0x89,0x67,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
。
知道出了什么问题吗?
您需要将宽度 2
指定为:
std::sscanf("00112233-4455-6677-8899-AABBCCDDEEFF",
"%2hhx%2hhx%2hhx%2hhx-%2hhx%hhx-%2hhx%2hhx-%2hhx%2hhx-"
"%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx",
&arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6], &arr[7],
&arr[8], &arr[9], &arr[10], &arr[11], &arr[12], &arr[13], &arr[14], &arr[15]
);