如何将NSString值转换为NSData?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将NSString值转换为NSData?相关的知识,希望对你有一定的参考价值。

如何将NSString值转换为NSData

答案
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
另一答案
NSString *str = @"Banana";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];
另一答案

Objective-C的

NSString *str = @"Hello World";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];

迅速

let str = "Hello World"
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)
另一答案
NSString *str = @"helowrld";
// This converts the string to an NSData object
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

你可以参考这个link

另一答案

做:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

然后随意继续使用NSJSONSerialization:JSONObjectWithData


Correction to the answer regarding the NULL terminator

在评论,官方文档和verifications之后,关于删除所谓的NULL终止符的更新得到了更新:

  1. 正如dataUsingEncoding:所记录的那样: 回报价值 使用NO作为第二个参数调用dataUsingEncoding:allowLossyConversion:的结果
  2. 正如getCString:maxLength:encoding:cStringUsingEncoding:所记录: 请注意,dataUsingEncoding:allowLossyConversion:返回的数据不是严格的C字符串,因为它没有NULL终止符
另一答案

如果Swift Developer来到这里,

从NSString / String转换为NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
另一答案

Objective-C的:

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

迅速:

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

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

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

另一答案

对于Swift 3,你将主要从String转换为Data

let myString = "test"
let myData = myString.data(using: .utf8)
print(myData) // Optional(Data)
另一答案
NSString *str = @"hello";
NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];
另一答案

Objective-C的:

NSString到NSData:

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

NSData到NSString:

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

迅速:

字符串到数据:

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

数据到字符串:

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

以上是关于如何将NSString值转换为NSData?的主要内容,如果未能解决你的问题,请参考以下文章

将 UTF-8 编码的 NSData 转换为 NSString

将UTF-8编码的NSData转换为NSString

将 NSData 转换为 NSString 返回 nil

将 NSData 转换为 NSString 并再次转换为 NSData?

如何以编程方式将 NSData 转换为 NSString? [复制]

如何将设备令牌(NSData)转换为NSString?