【Swift】整数から2進数に変換する方法!FixedWidthInteger
この記事からわかること
- Swiftで整数を2進数に変換する方法
- FixedWidthIntegerとは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
整数を2進数に変換する方法
整数を2進数に変換する方法は公式リファレンスに掲載されている以下のコードで実装することができました。
extension FixedWidthInteger {
var binaryString: String {
var result: [String] = []
for i in 0..<(Self.bitWidth / 8) {
let byte = UInt8(truncatingIfNeeded: self >> (i * 8))
let byteString = String(byte, radix: 2)
let padding = String(repeating: "0",
count: 8 - byteString.count)
result.append(padding + byteString)
}
return "0b" + result.reversed().joined(separator: "_")
}
}
print(Int16.max.binaryString)
// Prints "0b01111111_11111111"
print((101 as UInt8).binaryString)
// Prints "0b01100101"
FixedWidthInteger
protocol FixedWidthInteger : BinaryInteger, LosslessStringConvertible where Self.Magnitude : FixedWidthInteger, Self.Magnitude : UnsignedInteger, Self.Stride : FixedWidthInteger, Self.Stride : SignedInteger
FixedWidthInteger
は固定サイズの整数型のプロトコルです。Int
、UInt
、Int8
、UInt8
などが満たすべき基本的な機能を定義しています。
つまりこのプロトコルに準拠している整数は特定のビット値で値を表せることが保証されています。
String(_,radix)で変換する
String(_,radix)
メソッドを使用することでもっと簡単に変換することができました。
print(String(Int16.max,radix: 2))
// 111111111111111
print(String(101,radix: 2))
// 1100101
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。