如何将NSString值转换为NSData?

问题描述 投票:897回答:11

如何将NSString值转换为NSData

objective-c nsstring nsdata
11个回答
1409
投票
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

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

0
投票

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)

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

你可以参考这个link


32
投票

做:

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终止符

20
投票

如果Swift Developer来到这里,

从NSString / String转换为NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)

17
投票

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

10
投票

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

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


7
投票

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

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

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

2
投票

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!
© www.soinside.com 2019 - 2024. All rights reserved.