Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的前导二进制零_Swift_Swift3 - Fatal编程技术网

Swift中的前导二进制零

Swift中的前导二进制零,swift,swift3,Swift,Swift3,我把一个十六进制值转换成一个二进制数,但它并没有打印出前导零。我知道swift没有像C一样的内置功能。我想知道当我知道二进制数的最大值是16个字符时,是否有办法打印出任何前导零。我有一些代码可以运行,将十六进制数转换成十进制数,然后转换成二进制数 @IBAction func HextoBinary(_ sender: Any) { //Removes all white space and recognizes only text let origHex = textView.text.tri

我把一个十六进制值转换成一个二进制数,但它并没有打印出前导零。我知道swift没有像C一样的内置功能。我想知道当我知道二进制数的最大值是16个字符时,是否有办法打印出任何前导零。我有一些代码可以运行,将十六进制数转换成十进制数,然后转换成二进制数

@IBAction func HextoBinary(_ sender: Any)
{
//Removes all white space and recognizes only text
let origHex = textView.text.trimmingCharacters(in: .whitespacesAndNewlines)
if let hexNumb_int = Int(origHex, radix:16)
 {
   let decNumb_str = String(hexNumb_int, radix:2)
   textView.text = decNumb_str
 }
}

非常感谢您的帮助。

创建固定长度(具有前导0)二进制表示的另一种方法:

extension UnsignedInteger {
    func toFixedBinaryString(_ bits: Int = MemoryLayout<Self>.size*8) -> String {
        let uBits = UIntMax(bits)
        return (0..<uBits)
            .map { self.toUIntMax() & (1<<(uBits-1-$0)) != 0 ? "1" : "0" }
            .joined()
    }
}
extension SignedInteger {
    func toFixedBinaryString(_ bits: Int = MemoryLayout<Self>.size*8) -> String {
        return UIntMax(bitPattern: self.toIntMax()).toFixedBinaryString(bits)
    }
}

let b: UInt16 = 0b0001_1101_0000_0101
b.toFixedBinaryString(16) //=>"0001110100000101"
b.toFixedBinaryString()   //=>"0001110100000101"

let n: Int = 0x0123_CDEF
n.toFixedBinaryString(32) //=>"00000001001000111100110111101111"
n.toFixedBinaryString()   //=>"0000000000000000000000000000000000000001001000111100110111101111"
扩展无符号整数{
func-toFixedBinaryString(u位:Int=MemoryLayout.size*8)->String{
设uBits=UIntMax(位)
返回(0..“00011110000001”
设n:Int=0x0123\u CDEF
n、 toFixedBinaryString(32)/=>“0000000 1001000111100110111101111”
n、 toFixedBinaryString()/=>“0000000000000000000000000000000001001000111100110111111”

链接到“duplicate”的代码用于Swift 1、2和3。为什么
Any
作为返回类型而不是
String
?@MartinR,这只是一个错误。可能我接受了一些Xcode建议,但没有完成。