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
How do I convert an NSString value to NSData?
提问by flitzwald
How do I convert an NSString
value to NSData
?
如何将NSString
值转换为NSData
?
回答by flitzwald
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
回答by ALOK KUMAR
回答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 终止符:
As documented by dataUsingEncoding::
Return Value
The result of invoking
dataUsingEncoding:allowLossyConversion:
with NO as the second argumentAs 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
正如dataUsingEncoding所记录的:
返回值
dataUsingEncoding:allowLossyConversion:
以 NO 作为第二个参数的调用结果正如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 UTF8String
when you need a C
string in that encoding.
首先,您应该使用dataUsingEncoding:
而不是通过UTF8String
. 只有UTF8String
在需要C
该编码的字符串时才使用。
Then, for UTF-16
, just pass NSUnicodeStringEncoding
instead of NSUTF8StringEncoding
in your dataUsingEncoding:
message.
然后,对于UTF-16
,只需传递NSUnicodeStringEncoding
而不是NSUTF8StringEncoding
在您的dataUsingEncoding:
消息中。
回答by Hymans205
For Swift 3, you will mostly be converting from String
to Data
.
对于斯威夫特3,您将主要从转换String
到Data
。
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];