UInt8数组未转换为字节字符串

时间:2019-01-25 06:13:06

标签: ios swift

我在android项目中有这样的功能

override fun send(data: ByteArray?) {

    if (data == null || data.isEmpty()) {
      warn { "Empty Request" }
      return
    }

    webSocket?.send(ByteString.of(ByteBuffer.wrap(data)))
  }

我很快就写了等效的代码

func send(data: [UInt8]?) {
        if(data == nil || data?.count == 0) { return }
        var dataString = String(data: Data(bytes: data!, count: data!.count), encoding : String.Encoding.utf8)!
        if(self.webSocket != nil) {
            self.webSocket!.send(text: dataString)
        }
    }

但是我发现当UInt8数组的任何元素大于127时,我的代码很快就会中断。 128-255之间的任何值。因此,我将如何迅速实现等效的Java代码。

1 个答案:

答案 0 :(得分:-2)

我尝试使用NSString并能够获得数组元素> 127的有效字符串。

这是我的游乐场代码。

import UIKit

var data = [UInt8]()

data.append(0)
data.append(120)
data.append(254)

print(UInt8.max)

print(data)

var dataString =  NSString(bytes: data, length: data.count, encoding: 0)
print(dataString as Any)

不确定这是否是正确的编码字符串,并且可能会在另一端引起问题。