NSString, NSData, Byte 间不得不说的故事

最近比较懒啥都不说了直接上代码

ruhi.jpg

OC

NSString *str;
NSData *data;
Byte byte[n];
    
// 1. NSString -> NSData
      data = [str dataUsingEncoding:NSUTF8StringEncoding];
    
// 2. NSData -> NSString
      str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
// 3. NSString -> Byte
      [str getBytes:byte maxLength:str.length usedLength:nil encoding:NSUTF8StringEncoding options:NSStringEncodingConversionExternalRepresentation range:NSMakeRange(0, str.length) remainingRange:nil];
    
// 4. Byte -> NSString
      str = [[NSString alloc] initWithBytes:byte length:sizeof(byte) encoding:NSUTF8StringEncoding];
    
// 5. NSData -> Byte
      (1) const Byte *byteP = data.bytes;
      (2) [data getBytes:byte length:sizeof(byte)];
      
// 6. Byte -> NSData
      data = [NSData dataWithBytes:byte length:sizeof(byte)];

Swift

var str: String!
var data: Data!
var uInt8: [UInt8]!

// 1. String -> Data
   data = str.data(using: .utf8)
   
// 2. Data -> String
   str = String(data: data, encoding: .utf8)

// 3. String -> [UInt8]
   uInt8 = [UInt8](str.utf8)

// 4. [UInt8] -> String
   str = String(bytes: uInt8, encoding: .utf8)

// 5. Data -> [UInt8]
   uInt8 = [UInt8](data)
   
   (1): Data -> UnsafePointer<UInt8> 
        _ = data.withUnsafeBytes { (uInt8: UnsafePointer<UInt8>) -> ResultType in
           ...
        }
   (2): Data -> UnsafeMutablePointer<UInt8>
        data.copyBytes(to: &uInt8, count: uInt8.count)
   (3): UnsafeRawPointer -> UnsafePointer<UInt8>
        let nsData: NSData = ...
        let uInt8P = nsData.bytes.assumingMemoryBound(to: UInt8)
   
// 6. [UInt8] -> Data
   data = Data(bytes: uInt8)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 7月29日:这次来到知北游我仿佛看到了一万个应枘宇,我自身也有问题不过我还是要先说我看到的,我先分分类先分两类人:...
    Michaelzxq阅读 351评论 1 0
  • 喜欢的不要不要的,很想拥有,很想把玩或者拥抱抚触的东西或者人,应该可以叫做心头好吧。 亲爱的,你有没有心头好呢?反...
    鱼娘阅读 422评论 0 0
  • 英国作家普里斯特利在《谈无所事事》中这样写道:“在这人世间,万恶其实都是那些一向忙忙碌碌的人造成的,他们既不知道什...
    达亨辉阅读 566评论 0 3