如何在Swift 4中将2个值从ByteArray Array <uint8>转换为16位整数UInt16?

时间:2018-08-28 13:17:09

标签: ios arrays swift uint16

使用Xcode 9.4.1和Swift 4.1

我有一个函数,该函数读取Array作为Input参数(请参见我的代码中的messageData)。现在,我想将2个特定字节(所以ByteArray的2个值)分配给一个UInt16。 因此,我在更多问题中看到了使用0xff的方法,但这对我不起作用。我要转换的16位整数是28281。

    var ctValue : UInt16 = CFSwapInt16HostToBig(UInt16(commandType!.rawValue))
    let ctValueData: UnsafeMutablePointer<UInt16> = UnsafeMutablePointer<UInt16>(&ctValue)
    ctValueData[1] = UInt16(CChar(((messageData[++(idx)]) >> 8) & 0xff))
    ctValueData[0] = UInt16(CChar(((messageData[++(idx)]) >> 0) & 0xff))
    commandType = NWPFunction.forCommandId(commandId:Int(ctValue))
  • commandType是一个枚举,包含多个包含十六进制值的情况
  • messageData是一个ByteArray,此函数的参数
  • NWPFunction是一个包含“ forCommandId”函数的类,该函数将为给定的16位整数“ ctValue”返回特定值
  • ++()是我添加的前缀函数,因此可以编译

0 个答案:

没有答案