objective-c – 如何使用NSString getBytes:maxLength:usedLength:encoding:options:range:remainingRange:

objective-c – 如何使用NSString getBytes:maxLength:usedLength:encoding:options:range:remainingRange:,第1张

概述我有一个字符串,我想作为一个字节数组.到目前为止,我已经使用NSData来做到这一点: NSString *message = @"testing";NSData *messageData = [message dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:YES];NSUInteger dataLength = 我有一个字符串,我想作为一个字节数组.到目前为止,我已经使用NSData来做到这一点:

Nsstring *message = @"testing";NSData *messageData = [message dataUsingEnCoding:NSUnicodeStringEnCoding allowLossyConversion:YES];NSUInteger dataLength = [messageData length];Byte *byteData = (Byte*)malloc( dataLength );memcpy( byteData,[messageData bytes],dataLength );

但是,我知道Nsstring有getBytes:maxLength:usedLength:enCoding:options:range:remainingRange:允许我一起跳过使用NSData的方法.我的问题是,我不知道如何正确设置所有参数.

我假设传入的指针数组必须是malloc’ed – 但我不知道如何找到malloc的内存量.我知道有[Nsstring lengthOfBytesUsingEnCoding:]和[Nsstring maximumLengthOfBytesUsingEnCoding:]但我不知道这些是我需要使用的方法,也不完全理解它们之间的区别.我假设这与maxLength的值相同.其余参数从文档中有意义.任何帮助都会很棒.谢谢.

解决方法 lengthOfBytesUsingEnCoding:和maximumLengthOfBytesUsingEnCoding:之间的区别在于前者是精确但慢(O(n)),而后者是快(O(1))但可能返回比实际需要的字节数大得多的字节. maximumLengthOfBytesUsingEnCoding:赋予的唯一保证是返回值足够大以包含字符串的字节.

通常,您的假设是正确的.所以该方法应该像这样使用:

NSUInteger numberOfBytes = [message lengthOfBytesUsingEnCoding:NSUnicodeStringEnCoding];voID *buffer = malloc(numberOfBytes);NSUInteger usedLength = 0;NSRange range = NSMakeRange(0,[message length]);BOol result = [message getBytes:buffer maxLength:numberOfBytes usedLength:&usedLength enCoding:NSUnicodeStringEnCoding options:0 range:range remainingRange:NulL];...free(buffer);
总结

以上是内存溢出为你收集整理的objective-c – 如何使用NSString getBytes:maxLength:usedLength:encoding:options:range:remainingRange:全部内容,希望文章能够帮你解决objective-c – 如何使用NSString getBytes:maxLength:usedLength:encoding:options:range:remainingRange:所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存