如何在Swift中将Int转换为十六进制字符串 [英] How to convert an Int to Hex String in Swift
问题描述
在Obj-C中,我用无符号整数n转换为一个十六进制字符串,其中包含
$ p $ N $ C $ N $ stringWithFormat:@%2X,n];
我尝试了很长时间才将其转换为Swift语言,但未成功。
您现在可以这样做:
n = 14
var st = String(格式:%2X,n)
st + =是\(n)的十六进制表示
print (st)
0E是14
的十六进制表示注意: 2
在这个例子中是字段宽度并且表示所需的最小长度长度。如有必要,结果将会填入前导 0
的结果。当然,如果结果大于两个字符,则字段长度将不会被裁剪为宽度2;它会扩展到显示完整结果所需的任何长度。
只有当 Foundation
导入时才有效(这包括导入 Cocoa
或 UIKit
)。如果您正在执行 iOS 或 OS X 编程,则这不是问题。
使用大写字母<$如果你想要 A ... F
和小写 x
if a ... f
:
字符串(格式: %x%X,64206,64206)//face face
如果您想打印整数值大于 UInt32.max
,添加 ll
( el-el ,而不是<
let n = UInt64.max
print(String em> eleven ) (格式:%llX是\(n)的十六进制,n))
FFFFFFFFFFFFFFFF是十六进制的18446744073709551615
原始答案
您仍然可以使用 NSString
来做到这一点。格式为:
var st = NSString(格式:%2X,n)
这使得
st
anNSString
,那么诸如+ =
之类的东西不起作用。如果您希望能够将+ =
使st
添加到字符串中,字符串
像这样:
var st = NSString(format:%2X,n)as字符串
或
var st = String(NSString(format:%2X,n))
或
var st:String = NSString(format:%2X,n)
$ c
然后你可以这样做:
pre $ code $>让n = 123
var st = NSString(格式:%2X,n)作为字符串
st + =是\(n)的十六进制表示
// 7B是123
的十六进制表示In Obj-C I used to convert an unsigned integer n to a hex string with
NSString *st = [NSString stringWithFormat:@"%2X", n];
I tried for a long time to translate this into Swift language, but unsuccessfully.
解决方案You can now do:
let n = 14 var st = String(format:"%2X", n) st += " is the hexadecimal representation of \(n)" print(st)
0E is the hexadecimal representation of 14
Note: The
2
in this example is the field width and represents the minimum length desired. The result will be padded with leading0
's if necessary. Of course, if the result is larger than two characters, the field length will not be clipped to a width of 2; it will expand to whatever length is necessary to display the full result.This only works if you have
Foundation
imported (this includes the import ofCocoa
orUIKit
). This isn't a problem if you're doing iOS or OS X programming.Use uppercase
X
if you wantA...F
and lowercasex
if you wanta...f
:String(format: "%x %X", 64206, 64206) // "face FACE"
If you want to print integer values larger than
UInt32.max
, addll
(el-el, not eleven) to the format string:let n = UInt64.max print(String(format: "%llX is hexadecimal for \(n)", n))
FFFFFFFFFFFFFFFF is hexadecimal for 18446744073709551615
Original Answer
You can still use
NSString
to do this. The format is:var st = NSString(format:"%2X", n)
This makes
st
anNSString
, so then things like+=
do not work. If you want to be able to append to the string with+=
makest
into aString
like this:var st = NSString(format:"%2X", n) as String
or
var st = String(NSString(format:"%2X", n))
or
var st: String = NSString(format:"%2X", n)
Then you can do:
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"
这篇关于如何在Swift中将Int转换为十六进制字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!