配列内の16進数値から文字列を作成しようとしていますが、配列内の16進数がゼロで始まる場合は、結果の文字列でも消えます。
私が使う String(value:radix:uppercase)
文字列を作成します。
例:
これが配列です: [0x13245678, 0x12345678, 0x12345678, 0x12345678]
.
これは私に文字列を与えます: 12345678123456781234567812345678
(32文字)
しかし、次の配列: [0x02345678, 0x12345678, 0x02345678, 0x12345678]
(2つを交換したことに注意してください 1
「ゼロ付き」。
私に文字列を与えます: 234567812345678234567812345678
(30文字)
ゼロが削除される理由がわかりません。 値 正しい;ゼロが存在する場合、ゼロを保持するようにフォーマットするにはどうすればよいですか?
回答:
回答№1の場合は3数字 0x01234567
本当にちょうど 0x1234567
。数字リテラルの先頭のゼロは何も意味しません(8進数リテラルに先頭の0を使用している場合を除く)。
使用する代わりに String(value:radix:uppercase)
、 つかいます String(format:)
.
let num = 0x1234567
let str = String(format: "%08X", num)
フォーマットの説明:
- ザ
0
必要に応じて文字列の左端にゼロを埋め込むことを意味します。 - ザ
8
結果を8文字にすることを意味します - ザ
X
数字を大文字の16進数に変換することを意味します。つかいますx
小文字の16進数が必要な場合。