0
Swift 3では小数点以下の8進数を16進数に変換する方法を探しています。第三者のライブラリとFoundationを使用しない自己記述コード。スウィフト3では小数点以下の八進数を16進数に変換し、逆も同様です。
for num in OctalVal {
switch num {
case "0": result = result * 8
case "1": result = result * 8 + 1
case "2": result = result * 8 + 2
case "3": result = result * 8 + 3
case "4": result = result * 8 + 4
case "5": result = result * 8 + 5
case "6": result = result * 8 + 6
case "7": result = result * 8 + 7
default: return "Error"
}
}
n2 = result
while n2 > 0 {
c2 = n2 % 16
n2 = n2/16
k2.append("\(c2)")
}
for i in k2.reversed() {
if(i == "10"){
fs2 += "A"
}
else if(i == "11") {
fs2 += "B"
}
else if(i == "12") {
fs2 += "C"
}
else if(i == "13") {
fs2 += "D"
}
else if(i == "14") {
fs2 += "E"
}
else if(i == "15") {
fs2 += "F"
}
else {
fs2 += "\(i)"
}
}
return "\(fs2)"
}
そして、この1ヘックスのオクタルへ:
for num in Left {
switch num {
case "0": result += "0000"
break;
case "1": result += "0001"
break;
case "2": result += "0010"
break;
case "3": result += "0011"
break;
case "4": result += "0100"
break;
case "5": result += "0101"
break;
case "6": result += "0110"
break;
case "7": result += "0111"
break;
case "8": result += "1000"
break;
case "9": result += "1001"
break;
case "A": result += "1010"
break;
case "B": result += "1011"
break;
case "C": result += "1100"
break;
case "D": result += "1101"
break;
case "E": result += "1110"
break;
case "F": result += "1111"
break;
default: return "Error"
}
}
例:小数に関する12D.3AF9F
(8進数)455.1657476への任意のアイデアをたとえば、このコードは16進数8進数整数に変換します部? はその後進バイナリ変換し、バイナリ文字列の長さの3の倍数にするバイナリ、パッドに私の要求
「0.3A(hex)= 3 *(1/16)+ A *(1/16)^ 2」とほぼ同じです。しかし、1-1のマッピングはそこでは機能しません... – Sulthan
長さ3の倍数にするために16進数に変換し、2進数を8進数に変換する3AF9F = "0011 1010 1111 1001 1111" = "001 110 101 111 100 100 111 110 "= 1657476。 – vacawama