Swift中的unsigned char

在Obj-C中,此代码用于将NSData转换为unsigned char:

unsigned char *dataToSentToPrinter = (unsigned char *)malloc(commandSize); 

在Swift中,unsigned char被称为CUnsignedChar,但是如何在Swift中将NSData对象转换为CUnsignedChar?

这可能是你正在寻找的:

 let commandsToPrint: NSData = ... // Create char array with the required size: var dataToSentToPrinter = [CUnsignedChar](count: commandsToPrint.length, repeatedValue: 0) // Fill with bytes from NSData object: commandsToPrint.getBytes(&dataToSentToPrinter, length: sizeofValue(dataToSentToPrinter)) 

更新:实际上你根本不需要复制数据(既不在Objective-C代码也不在Swift中)。 有一个指向数据的指针就足够了。 所以你的代码看起来像这样(比较Error(“’()’与’UInt8’不相同”)使用Swift中的write函数将NSData字节写入NSOutputStream以解决类似的问题):

 let dataToSentToPrinter = UnsafePointer(commandsToPrint.bytes) let commandSize = commandsToPrint.length var totalAmountWritten = 0 while totalAmountWritten < commandSize { let remaining = commandSize - totalAmountWritten let amountWritten = starPort.writePort(dataToSentToPrinter, totalAmountWritten, remaining) totalAmountWritten += amountWritten // ... }