将十六进制转换为 Swift 格式的字符串以保持相同的位数

Gee*_*e.E 3 string int hex swift

我试图从数组中的十六进制值创建一个字符串,但是每当数组中的十六进制以零开头时,它也会在结果字符串中消失。

String(value:radix:uppercase)用来创建字符串。


一个例子:

这是一个数组:[0x13245678, 0x12345678, 0x12345678, 0x12345678].
这给了我字符串:12345678123456781234567812345678 (32 个字符)

但是下面的数组:([0x02345678, 0x12345678, 0x02345678, 0x12345678]注意我1用零替换了两个)。
给我字符串:234567812345678234567812345678 (30 个字符)


我不确定为什么它会删除零。我知道这个是正确的;如果它在那里,我如何格式化它以保持零?

rma*_*ddy 5

这个数字0x01234567真的只是0x1234567。数字文字中的前导零没有任何意义(除非您将前导 0 用于八进制数字文字)。

而不是使用String(value:radix:uppercase),使用String(format:)

let num = 0x1234567
let str = String(format: "%08X", num)
Run Code Online (Sandbox Code Playgroud)

格式说明:

  • 根据0需要用零填充字符串左端的方法。
  • 8你想要得到的结果是8个字符长手段
  • X你想要装置的数量转换为大写的十六进制。x如果您想要小写十六进制,请使用。