在Swift中将一个字节转换为char

时间:2014-08-14 22:08:10

标签: casting swift char byte

我使用NSInputStream来读取msgs。 read方法以字节为单位返回msg,与Java中的相同。 我想取字节并将其打印为char(例如在Java println((char) 97) // prints "a"

我如何在Swift中做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:8)

这有效:

let b: UInt8 = 97

print(Character(UnicodeScalar(b)))

如果您想要更清洁,可以延长UInt8Int

extension UInt8 {
    var char: Character {
        return Character(UnicodeScalar(self))
    }
}

extension Int {
    var char: Character {
        return Character(UnicodeScalar(self))
    }
}

print(b.char)   // prints "a"
print(98.char)  // prints "b"

答案 1 :(得分:1)

如果您要查找的是字符串而不是字符(对您正在尝试的内容看起来更有用?您说您有字节,但询问个别字符)?

无论如何,您可以使用NSString执行此操作:

var char = 97

let str = NSString(bytes: &char, length: 1, encoding: NSUTF8StringEncoding)

你说你正在使用NSInputStream ......这里是如何把它放在一起的:

// create a stream to work with
let data = NSData(contentsOfURL: NSURL(string: "http://abhibeckert.com/"))
let stream = NSInputStream.inputStreamWithData(data)

// read from the stream
var buffer = [UInt8](count:100, repeatedValue: 0)
stream.open()

while stream.hasBytesAvailable {
  stream.read(&buffer, maxLength: buffer.count)

  // get a string for the current section of the buffer
  let str = NSString(bytes: buffer, length: buffer.count, encoding: NSUTF8StringEncoding)
}