【发布时间】:2018-05-11 07:22:56
【问题描述】:
我有一个像下面这样的 objc 函数
-(char *)decrypt:(char *)crypt el:(int)el{}
当我从 swift 调用此函数时,它返回 UnsafeMutablePointer<Int8>。现在我需要从这个指针中获取数据。输出应该是这样的字符串
“5c9f2cb88787fff26ca8a57982604460201805111017510011111111”
我尝试了下面的代码来检索值
String(validatingUTF8: pointer)
但它返回 nil。
我如何从这个UnsafeMutablePointer<Int8>?获得价值
【问题讨论】:
-
char *指向的数据是什么格式的?是 UTF-8 还是原始二进制数据(因为您的示例字符串仅使用可能是十六进制数字的字符)?它是否以空值终止? -
最好的猜测是数据不是有效的 UTF-8 字符串。查看十六进制表示并验证它是否有效或使用
String(validatingUTF8: pointer),其中非 UTF-8 值将显示为 unicode 错误符号:�。如果解密失败,则结果很可能是无效的 UTF-8。
标签: ios objective-c swift unsafe-pointers