Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

swift であらゆるデータをHex表示してデバッグする

Xcodeのデバッガではswiftオブジェクトの中身を表示しても生のデータを表示してくれず、デバッグしづらいです。
(C/C++なら大丈夫ですが。)
あらゆるものを16進Hex表示の文字列にしてデバッグに使いましょう。

public protocol HexRepresentable {
    func hexDescription() -> String
}

こんなプロトコルでいいでしょう。

extension UInt8 : HexRepresentable
{
    public func hexDescription() -> String {
        return String(format:"%02x", self)
    }
}

extension Int32 : HexRepresentable
{
    public func hexDescription() -> String
    {
        return String(format:"%08x", self)
    }
}

extension Collection where Iterator.Element : HexRepresentable {
    public func hexDescription() -> String {
        return self.map({ $0.hexDescription() }).joined()
    }
}

extension Data : HexRepresentable {
    public func hexDescription() -> String {
        return self.map({ String(format:"%02x", $0) }).joined() 
    }
}

これだけあれば、事足りるでしょう。

参照:

PBKit/PBHex.swift at master · pebble8888/PBKit · GitHub

詳解 Swift 第4版

詳解 Swift 第4版