我使用NSInputStream来读取msgs。
read方法以字节为单位返回msg,与Java中的相同。
我想取字节并将其打印为char(例如在Java println((char) 97) // prints "a"
)
我如何在Swift中做到这一点?
谢谢。
答案 0 :(得分:8)
这有效:
let b: UInt8 = 97
print(Character(UnicodeScalar(b)))
如果您想要更清洁,可以延长UInt8
和Int
:
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)
}