位(bits)包默認(rèn)包含在Vapor中,為處理字節(jié)提供了方便的API。
類型(Typealias)
位包為字節(jié)提供兩種類型別名。
typealias Byte = UInt8
typealias Bytes = [Byte]
BytesConvertible
當(dāng)我們正在工作時(shí),我們經(jīng)常要將對(duì)象轉(zhuǎn)換成字節(jié)數(shù)組。BytesConvertible有助于定義具有這些功能的對(duì)象。這在Vapor中的大多數(shù)對(duì)象上已被實(shí)現(xiàn),該對(duì)象可以/應(yīng)該被轉(zhuǎn)換成字節(jié)數(shù)組。
let hello = String(bytes: [72, 101, 108, 108, 111])
let bytes = hello.makeBytes()
字符串(String)
使用UTF-8編碼從字節(jié)轉(zhuǎn)換為字符串很容易。
let bytes = "hello".makeBytes()
let string = bytes.makeString()
print(string) // "hello"
字節(jié)(Byte)
大寫(xiě)和小寫(xiě)拉丁字母和一些附加的控制字符是靜態(tài)類型的Byte。
let bytes: Bytes = [.h, .e, .l, .l, .o]
print(bytes.makeString()) // "hello"
這使得字節(jié)操作和比較變得容易,對(duì)構(gòu)建像解析器和序列化器這樣的東西很有用。
let byte: Byte = 65
if byte == .A {
print("found A!")
}