Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将GUID转换为NSString-Objective_Ios_Objective C_Guid_Uuid_Endianness - Fatal编程技术网

Ios 将GUID转换为NSString-Objective

Ios 将GUID转换为NSString-Objective,ios,objective-c,guid,uuid,endianness,Ios,Objective C,Guid,Uuid,Endianness,我定义了一个GUID结构,如下所示 typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[ 8 ]; } GUID; 我正在尝试将其转换为NSString。但是,我得到了前三个(长、短、短)的反向值。这可能是由于大端的 例如: GUID testGUID = { 0x865f82d0, 0x33

我定义了一个
GUID
结构,如下所示

typedef struct _GUID {
    unsigned long  Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char  Data4[ 8 ];

} GUID;
我正在尝试将其转换为
NSString
。但是,我得到了前三个
(长、短、短)
的反向值。这可能是由于大端的

例如:

 GUID testGUID = { 0x865f82d0, 0x3303, 0x403d, { 0xbf, 0xcd, 0xeb, 0xb2, 0xde, 0xd9, 0xa0, 0x69 } };
 NSUUID *uuid = [[NSUUID alloc] initWithUUIDBytes:(const unsigned char*)&testGUID];
 NSString *uuidString = [uuid UUIDString];
 NSLog(@"%@", uuidString);
输出
D0825F86-0333-3D40-BFCD-EBB2DED9A069

预期的
865F82D0-3303-403D-BFCD-EBB2DED9A069


让我知道有没有办法纠正这个问题。非常感谢您的帮助。

@borrden comment修复了此问题

这是解决办法

GUID testGUID = { 0x865f82d0, 0x3303, 0x403d, { 0xbf, 0xcd, 0xeb, 0xb2, 0xde, 0xd9, 0xa0, 0x69 } };

testGUID.Data1 = NTOHL(testGUID.Data1);
testGUID.Data2 = NTOHS(testGUID.Data2);
testGUID.Data3 = NTOHS(testGUID.Data3);

NSUUID *uuid = [[NSUUID alloc] initWithUUIDBytes:(const unsigned char*)&testGUID];
NSString *uuidString = [uuid UUIDString];
NSLog(@"%@", uuidString)

您可以使用函数来标准化endianness(您必须对Data1 2和Data3执行此操作)。@Borrden:非常感谢。如何将NSUID转换为Guid?