나는 Swift를 스스로 가르치는 것처럼 Base32 디코딩을 구현하려고하는데,이 언어로 바이트 레벨 이하로 갈 수 없다. UInt8을 5 비트로 잘라 내서 Data 객체에 추가하면 편리 할 것입니다. 출력 base32에서 데이터의 진수 표현을 작동Swift에서 UInt8 변수에서 N 비트를 얻는 방법은 무엇입니까?
def base32_decode(secret):
b32alphabet = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")
b32v = [b32alphabet.index(x) for x in secret if x != '=']
t1 = ["{0:0>5}".format(bin(v)[2:]) for v in b32v]
t2 = ''.join(t1)
t3 = textwrap.wrap(t2,8)
t4 = [int(v, 2) for v in t3 if len(v) == 8]
t5 = ''.join(["{0:0>2}".format(hex(v)[2:]) for v in t4])
:
나는 파이썬으로 작성된이 기능을 가지고있다. Swift에서 이것을 복제하고 싶었습니다 (16 진수로 변환하지는 않았지만). 그러나 나는 이것을 멀리 가지고 있습니다 :
func base32decode(string: String) -> Data
{
let b32a: Array = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", "5", "6", "7"]
let complete: NSMutableData = NSMutableData()
var b32v: Array<UInt8> = []
for c in string.characters
{
let index = b32a.index(of: String(c))!
b32v.append(UInt8(index)) // Need to append only the 5 LSB
}
// Return b32v as base 32 decoded data
...
쉬운 방법이 있습니까? Google을 통해 아무 것도 찾을 수 없습니다.