【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

公式リファレンス:FixedWidthInteger

protocol FixedWidthInteger : BinaryInteger, LosslessStringConvertible where Self.Magnitude : FixedWidthInteger, Self.Magnitude : UnsignedInteger, Self.Stride : FixedWidthInteger, Self.Stride : SignedInteger

FixedWidthInteger固定サイズの整数型のプロトコルです。IntUIntInt8UInt8などが満たすべき基本的な機能を定義しています。

つまりこのプロトコルに準拠している整数は特定のビット値で値を表せることが保証されています。

String(_,radix)で変換する

String(_,radix)メソッドを使用することでもっと簡単に変換することができました。

print(String(Int16.max,radix: 2))
// 111111111111111
print(String(101,radix: 2))
// 1100101

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index