トップページ > プログラム > 2016年10月21日 > l5tk1soN

書き込み順位&時間帯一覧

6 位/143 ID中時間01234567891011121314151617181920212223Total
書き込み数5000000000000000000000005



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
詰めswift [無断転載禁止]©2ch.net

書き込みレス一覧

詰めswift [無断転載禁止]©2ch.net
14 :デフォルトの名無しさん[]:2016/10/21(金) 00:07:12.34 ID:l5tk1soN
>>12
%xは32ビットの変換指定子なのでこのままだと64ビットの時上手く動かないよ
%llxを使おう←とりあえず動くと思う
厳密にやるなら%hhx、%hx、%lx、%llxを使い分けなきゃいけない

import Foundation

func toHex<T:UnsignedInteger>(_ val:T)->String {
let byteLen=MemoryLayout<T>.size
let fmtStr = [1:
詰めswift [無断転載禁止]©2ch.net
15 :デフォルトの名無しさん[]:2016/10/21(金) 00:09:13.94 ID:l5tk1soN
なんか上手くかけなかった
テスト
let fmtStr = [1:"%02hhx",2:"%04hx",4:"%08lx",8:"%016llx"]
テストここまで
詰めswift [無断転載禁止]©2ch.net
16 :デフォルトの名無しさん[]:2016/10/21(金) 00:10:44.13 ID:l5tk1soN
再投稿
import Foundation

func toHex<T:UnsignedInteger>(_ val:T)->String {
let byteLen=MemoryLayout<T>.size
let fmtStr = [1:"%02hhx",2:"%04hx",4:"%08lx",8:"%016llx"]
return String(format:fmtStr[byteLen]!, val as! CVarArg)
}

print( toHex(UInt8(0x0f)) )
print( toHex(UInt16(0x01ff)) )
print( toHex(UInt32(0x010000ff)) )
print( toHex(UInt64(0x01000000000000ff)) )
詰めswift [無断転載禁止]©2ch.net
17 :デフォルトの名無しさん[]:2016/10/21(金) 00:16:57.99 ID:l5tk1soN
>>16
投稿成功

ただ、formatは型安全じゃないのでString(val, radix:16)を使う方がswiftらしいと思うな
詰めswift [無断転載禁止]©2ch.net
18 :デフォルトの名無しさん[]:2016/10/21(金) 00:46:56.25 ID:l5tk1soN
>>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()って頭詰には使えないのか?使えたらもう少し綺麗に書けるのだけど


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。