小编jon*_*jon的帖子

试图在Swift中将类型(BigEndian)的NSData从BlueTooth转换为Int类型的Little Endian

我正在尝试将通过蓝牙连接获得的 NSData 类型的 6 字节十六进制转换为适当的整数值。我知道这是 Big Endian 类型,我需要转换为 little Endian。但是,每次我尝试转换它时,我都可以提取正确的数据,但结果看起来不对,请参阅下面的操场代码:

var newdata = NSData(bytes: [0x26, 0x01, 0x45, 0x01, 0x04, 0x5e, ] as [UInt8], length:6)


//var timeData  = newdata.subdataWithRange(NSMakeRange(4,2))
//var heelData = newdata.subdataWithRange(NSMakeRange(2,2))
//var frontData = newdata.subdataWithRange(NSMakeRange(0,2))


var timeData:UInt16 = 0 
var heelData:UInt16 = 0
var frontData:UInt16 = 0


//var timeData = data.subdataWithRange(NSMakeRange(4,2))

var timeIn: NSNumber = NSNumber(unsignedShort: 0)
newdata.getBytes(&timeIn, range: NSRange(location: 4,length: 2))
timeData = CFSwapInt16BigToHost(timeIn.unsignedShortValue)
//24068

 var heelIn: NSNumber = NSNumber(unsignedShort: 0)
 newdata.getBytes(&heelIn, range: NSRange(location: 2, length: 2))
 heelData …
Run Code Online (Sandbox Code Playgroud)

bluetooth endianness nsdata swift

3
推荐指数
1
解决办法
1489
查看次数

标签 统计

bluetooth ×1

endianness ×1

nsdata ×1

swift ×1