当前位置: 首页 > 面试题库 >

如何在Swift中将Int转换为十六进制字符串

澹台冯浩
2023-03-14
问题内容

在Obj-C中,我曾经使用以下命令将无符号整数n转换为十六进制字符串:

 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;它将扩展到显示完整结果所需的任何长度。

仅当您Foundation导入后才有效(包括Cocoa或的导入UIKit)。如果您正在执行 iOSmacOS 编程,这不是问题。

使用大写X,如果你想A...F和小写字母x,如果你想a...f

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

如果要打印大于的整数,请在格式字符串中UInt32.max添加llel-el ,而不是 11 ):

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)

这样会st产生NSString,因此类似之类的东西+=将无法正常工作。如果您希望可以使用+=make
st将其追加到字符串中,String如下所示:

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"


 类似资料:
  • 问题内容: 我想将一个整数(将为<= 255)用于十六进制字符串表示形式 例如:我想通过并离开,或获得。 我曾尝试使用65来执行此操作,但由于它想采用单个字符串,因此上述内容均会阻塞。 问题答案: 您正在寻找功能。 您似乎在混合使用整数的十进制表示形式和整数的十六进制表示形式,因此尚不清楚您需要什么。根据您的描述,我认为这些片段之一显示了您想要的内容。 请注意,这与 包含整数(十六进制)的字符串

  • 问题内容: 我正在尝试将十六进制代码长8个字符的字符串转换为整数,以便可以进行int比较,而不是对许多不同值进行字符串比较。 我知道在C ++中这是微不足道的,但是我需要在Java中完成。我需要满足的测试用例实质上是将“ AA0F245C”转换为int,然后再返回到该字符串,以便我知道它在正确转换。 我尝试了以下方法: 我也尝试一次将两个字符做一次,然后将结果相乘,转换有效,但数字不正确。 不能这

  • 问题内容: 如何在Python中将十六进制字符串转换为int? 我可能将其命名为或。 问题答案: 如果没有 0x前缀,则需要显式指定基数,否则无法分辨: 使用 0x前缀,Python可以自动区分十六进制和十进制。 (必须指定0为基数才能调用此前缀猜测行为;省略第二个参数意味着假定基数为10。)

  • 我正在尝试将int转换为字符串中的十六进制。目前的解决方案并不是预期的那样有效。 十六进制必须采用格式。例如。; 输出与十六进制完全不同,即使它们等于相应的十六进制值。输出必须是格式的十六进制。 这里不走运。后跟所以它不有用。在之前没有。我想要那个。更好的是,一个我选择的填充长度。注释中建议的也不起作用。 不能使用,因为必须转义,或者代码甚至不能工作。我真的希望避免需要修改字符串的解决方案,因为这

  • 问题内容: 我编写了一个简单的程序,用于在Java中向串行端口发送和接收数据。我通过回送测试(Rx到Tx)连接串行端口设备。它工作正常。但我无法发送和接收十六进制数据到串行端口和接收串行端口。在我的设备中使用了FT232BL芯片,因此是否需要任何dll或其他库来将十六进制数据发送和接收到串行端口设备。我的代码如下。 问题答案: 十六进制: 十六进制为:

  • 问题内容: 我在ex中有整数。16,我正在尝试将此数字转换为十六进制数字。我试图通过使用十六进制函数来实现此目的,但是每当您向十六进制函数提供整数时,它都会返回十六进制数字的字符串表示形式, 有人可以告诉我如何将字符串格式的十六进制数字转换为简单的十六进制数字。 谢谢!! 问题答案: