>>16
func toHex<T:UnsignedInteger>(_ intVal:T)->String{
let byteLen=MemoryLayout<T>.size
let hexStr=String(intVal, radix:16)
return String(repeating:"0",count:byteLen*2-hexStr.characters.count)+hexStr
}

こっちの方がミスらないと思う
Foundationのimportも要らないし
しかしString.padding()って頭詰には使えないのか?使えたらもう少し綺麗に書けるのだけど