NSData from UInt8

前端 未结 3 1249
心在旅途
心在旅途 2020-12-18 23:40

I have recently found a source code in swift and I am trying to get it to objective-C. The one thing I was unable to understand is this:

var theData:UInt8!

         


        
3条回答
  •  [愿得一人]
    2020-12-19 00:27

    If you write the Swift code slightly simpler as

    var theData : UInt8 = 3
    let data = NSData(bytes: &theData, length: 1)
    

    then it is relatively straight-forward to translate that to Objective-C:

    uint8_t theData = 3;
    NSData *data = [NSData dataWithBytes:&theData length:1];
    

    For multiple bytes you would use an array

    var theData : [UInt8] = [ 3, 4, 5 ]
    let data = NSData(bytes: &theData, length: theData.count)
    

    which translates to Objective-C as

    uint8_t theData[] = { 3, 4, 5 };
    NSData *data = [NSData dataWithBytes:&theData length:sizeof(theData)];
    

    (and you can omit the address-of operator in the last statement, see for example How come an array's address is equal to its value in C?).

提交回复
热议问题