【发布时间】:2011-03-21 23:05:10
【问题描述】:
我正在尝试在 Objective-C 中实现以下方法:
- (NSString*) getGuidWithCid: (int) cid;
此方法必须使用 C++ API 从数据库中检索 GUID,然后将此 GUID 转换为 GUID 的字符串表示形式。 C++ API返回的结构GUID有如下定义:
typedef struct _GUID {
ul_u_long Data1;
ul_u_short Data2;
ul_u_short Data3;
ul_byte Data4[ 8 ];
} GUID;
这是我实现此方法的尝试:
- (NSString*) getGuidWithCid: (int) cid
{
GUID ulguid;
((ULResultSet *) ulresultset)->GetGuid([cname UTF8String], &ulguid);
NSString* data4 = [[[NSString alloc] initWithBytes:ulguid.Data4
length:8
encoding: NSUTF8StringEncoding] autorelease];
return [NSString stringWithFormat:@"%u-%uh-%uh-%@",
ulguid.Data1,
ulguid.Data2,
ulguid.Data3,
data4];
}
这个方法的前两行工作正常,所以变量 ulguid 包含一个有效的 guid。我遇到的问题是转换 GUID 的字节数组部分(即 GUID 结构中的 Data4)。我目前从这种方法中得到的是用连字符分隔的三个数值,因此 Data1、Data2 和 Data3 似乎正确表示,但 Data4 显示为 NULL。我在这里做错了什么?
【问题讨论】:
标签: c++ objective-c xamarin.ios objective-c++