1. ホーム
  2. ios

[解決済み] Swift で Int を Hex 文字列に変換する方法

2023-01-26 13:52:33

質問

Obj-Cでは、符号なし整数nを16進文字列に変換するのに使っていました。

 NSString *st = [NSString stringWithFormat:@"%2X", n];

これをSwift言語に翻訳しようと長い間試みたのですが、失敗しました。

どうすれば解決するのでしょうか?

できるようになりました。

let n = 14
var st = String(format:"%02X", n)
st += " is the hexadecimal representation of \(n)"
print(st)

<ブロッククオート
0E is the hexadecimal representation of 14

2 は、この例では フィールド幅 を表し 最小 の長さを表します。 また 0 は、結果を先頭の 0 で埋めるように指示します。 (この 0 がなければ,結果は先頭の空白で埋め尽くされる)。 もちろん,結果が2文字より大きい場合は,フィールドの長さは,幅が 2 の幅に切り取られることはなく、完全な結果を表示するために必要な長さに拡張されます。

これは Foundation がインポートされている場合のみ動作します (これには Cocoa または UIKit ). これは、もしあなたが iOS または macOS のプログラミングが可能です。

大文字を使う X が必要な場合は A...F と小文字の x が必要な場合は a...f :

String(format: "%x %X", 64206, 64206)  // "face FACE"

よりも大きな整数を表示したい場合は UInt32.max よりも大きな整数値を表示したい場合は ll ( エル でなく イレブン ではなく) を書式文字列に追加します。

let n = UInt64.max
print(String(format: "%llX is hexadecimal for \(n)", n))

<ブロッククオート
FFFFFFFFFFFFFFFF is hexadecimal for 18446744073709551615


オリジナルの回答

この場合でも NSString を使うことができます。 形式は

var st = NSString(format:"%2X", n)

これは stNSString というように += は機能しない。 もし、文字列への追加を += とする stString のようにします。

var st = NSString(format:"%2X", n) as String

または

var st = String(NSString(format:"%2X", n))

または

var st: String = NSString(format:"%2X", n)

では、できる。

let n = 123
var st = NSString(format:"%2X", n) as String
st += " is the hexadecimal representation of \(n)"
// "7B is the hexadecimal representation of 123"