gpt4 book ai didi

c++ - 使用 Objective-C++ 从字节数组中读取特定字节并将它们转换为十六进制表示

转载 作者:行者123 更新时间:2023-11-30 04:35:19 25 4
gpt4 key购买 nike

我正在尝试将 GUID C++ 结构转换为 guid 的字符串表示形式。 GUID结构定义如下:

typedef struct _GUID {
ul_u_long Data1;
ul_u_short Data2;
ul_u_short Data3;
ul_byte Data4[ 8 ];
} GUID;

我在将 Data4 转换为字符串时遇到问题。可以在此处找到此结构的描述:http://msdn.microsoft.com/en-us/library/aa373931%28VS.85%29.aspx .根据描述,这个字节数组的前 2 个字节代表一组 4 个十六进制数字,接下来的 6 个字节包含第二组 12 个十六进制数字。

因此,给定像这样的 6B29FC40-CA47-1067-B31D-00DD010662DA 的 guid,字节数组在前 2 个字节中存储 B31D,在接下来的 6 个字节中存储 00DD010662DA字节。

所以,以这个 guid 为例,假设我有一个名为 ulguid 的 GUID 类型的变量,我想做的是提取 B31D-00DD010662DA 从字节数组 ulguid.Data4 使用 objective-c++。我该怎么做呢?

最佳答案

这段代码应该可以工作:

#include <cstdio>
#include <iostream>

GUID ulguid = {
0x6B29FC40u, 0xCA47, 0x1067,
{0xB3, 0x1D, 0x00, 0xDD, 0x01, 0x06, 0x62, 0xDA}
};

// 36 characters for the GUID, plus the zero terminator.
char buffer[37];

sprintf(buffer, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X",
ulguid.Data1, ulguid.Data2, ulguid.Data3,
ulguid.Data4[0], ulguid.Data4[1],
ulguid.Data4[2], ulguid.Data4[3],
ulguid.Data4[4], ulguid.Data4[5],
ulguid.Data4[6], ulguid.Data4[7]);

// Prints: 6B29FC40-CA47-1067-B31D-00DD010662DA
std::cout << buffer;

关于c++ - 使用 Objective-C++ 从字节数组中读取特定字节并将它们转换为十六进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com