2017-04-10 16 views
2

配列内の16進値から文字列を作成しようとしていますが、配列内の16進数が0で始まる場合は、同じように。Swiftで16進数を文字列に変換して同じ桁数を維持するようにフォーマット

私はString(value:radix:uppercase)を使用して文字列を作成します。


例:[0x13245678, 0x12345678, 0x12345678, 0x12345678]

ここ配列です。私の文字列を与える
12345678123456781234567812345678(32文字)

が、以下の配列:[0x02345678, 0x12345678, 0x02345678, 0x12345678](私はゼロで2 1年代を置き換え告知)。私はそれがゼロを削除する理由はわからない


234567812345678234567812345678(30文字):
は私の文字列を与えます。私はが正しいことを知っています。それがあれば、ゼロを維持するためにどのようにフォーマットできますか?

答えて

3

0xは実際には0x1234567です。数値リテラルの先行ゼロは何も意味しません(8進数リテラルの先頭に0を使用しない限り)。

String(value:radix:uppercase)の代わりにString(format:)を使用してください。フォーマットの

let num = 0x1234567 
let str = String(format: "%08X", num) 

説明:必要に応じて

  • 0パッドにゼロの文字列の左端を意味します。
  • 8は、結果を8文字にすることを意味します。
  • Xは、数値を大文字の16進数に変換することを意味します。小文字の16進数を使用する場合は、xを使用してください。
+0

ああ、素晴らしい!これを正確に探していた。 Appleの文字列形式指定子が見つかりましたが、必要な「0」についてはわかりませんでした。 –

+0

しかし、String(format:_ :)はFoundation(String(_:基数:大文字:)はインポートしません)をインポートする必要があります。 – Binarian

関連する問題