ios 如何将 NSString 值转换为 NSData?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/901357/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 15:57:06  来源:igfitidea点击:

How do I convert an NSString value to NSData?

iosobjective-cnsstringnsdata

提问by flitzwald

How do I convert an NSStringvalue to NSData?

如何将NSString值转换为NSData

回答by flitzwald

NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

回答by ALOK KUMAR

NSString *str = @"helowrld";
// This converts the string to an NSData object
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

you can take reference from this link

你可以参考这个链接

回答by Andrew Kolesnikov

Do:

做:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

then feel free to proceed with NSJSONSerialization:JSONObjectWithData.

然后随意继续NSJSONSerialization:JSONObjectWithData



Correction to the answer regarding the NULL terminator

更正有关 NULL 终止符的答案

Following the comments, official documentation, and verifications, this answer was updated regarding the removal of an alleged NULL terminator:

根据评论、官方文档和验证,此答案已更新,删除了所谓的 NULL 终止符:

  1. As documented by dataUsingEncoding::

    Return Value

    The result of invoking dataUsingEncoding:allowLossyConversion:with NO as the second argument

  2. As documented by getCString:maxLength:encoding:and cStringUsingEncoding::

    note that the data returned by dataUsingEncoding:allowLossyConversion:is not a strict C-string since it does not have a NULL terminator

  1. 正如dataUsingEncoding所记录的:

    返回值

    dataUsingEncoding:allowLossyConversion:以 NO 作为第二个参数的调用结果

  2. 正如getCString:maxLength:encoding:cStringUsingEncoding: 所记录的

    请注意,返回的数据dataUsingEncoding:allowLossyConversion:不是严格的 C 字符串,因为它没有 NULL 终止符

回答by Sruit A.Suk

In case of Swift Developer coming here,

如果 Swift 开发人员来到这里,

to convert from NSString / String to NSData

从 NSString / String 转换为 NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)

回答by Shamsiddin

Objective-C:

目标-C:

NSString *str = @"test string";
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str];
NSString *thatStr = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Swift:

迅速:

let str = "test string"
let data = NSKeyedArchiver.archivedData(withRootObject: str)
let thatStr = NSKeyedUnarchiver.unarchiveObject(with: data) as! String

回答by Jerry Thomsan

First off, you should use dataUsingEncoding:instead of going through UTF8String. You only use UTF8Stringwhen you need a Cstring in that encoding.

首先,您应该使用dataUsingEncoding:而不是通过UTF8String. 只有UTF8String在需要C该编码的字符串时才使用。

Then, for UTF-16, just pass NSUnicodeStringEncodinginstead of NSUTF8StringEncodingin your dataUsingEncoding:message.

然后,对于UTF-16,只需传递NSUnicodeStringEncoding而不是NSUTF8StringEncoding在您的dataUsingEncoding:消息中。

回答by Hymans205

For Swift 3, you will mostly be converting from Stringto Data.

对于斯威夫特3,您将主要从转换StringData

let myString = "test"
let myData = myString.data(using: .utf8)
print(myData) // Optional(Data)

回答by Nex Mishra

NSString *str = @"hello";
NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];

回答by Nick

Objective-C:

目标-C:

NSString to NSData:

NSString 到 NSData:

NSString* str= @"string";
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];

NSData to NSString:

NSData 到 NSString:

NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];

Swift:

迅速:

String to Data:

字符串到数据:

var testString = "string"
var somedata = testString.data(using: String.Encoding.utf8)

Data to String:

数据到字符串:

var backToString = String(data: somedata!, encoding: String.Encoding.utf8) as String!

回答by Kamani Jasmin

NSString *str = @"Banana";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];