Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Javascript 将5位二进制字符串解码回字符_Javascript_Swift_String_Binary - Fatal编程技术网

Javascript 将5位二进制字符串解码回字符

Javascript 将5位二进制字符串解码回字符,javascript,swift,string,binary,Javascript,Swift,String,Binary,我创建了一个简单的函数,可以将每个字母字符(a-z)转换为始终为5位二进制字符串(如“00000->a”或“11000->y”) SWIFT: let alphabeth_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", "", "", "", "", "", ""]

我创建了一个简单的函数,可以将每个字母字符(
a-z
)转换为始终为5位二进制字符串(如“00000->a”或“11000->y”)

SWIFT

 let alphabeth_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", "", "", "", "", "", ""]
 for i in 0..<32 {
   let binary_code = String(i/16%2) + String(i/8%2) + String(i/4%2) + String(i/2%2) + String(i%2)
   print("\(alphabeth_array[i]) : \(binary_code)")
}
 var alphabeth_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", "", "", "", "", "", ""]
 for (var i=0; i<32; i++) {
   var binary_code = (i/16%2).toString() + (i/8%2).toString() + (i/4%2).toString() + (i/2%2).toString() + (i%2).toString()
   console.log(alphabeth_array[i] + " : " + binary_code)
}


JAVASCRIPT

let binary = "00000" //starting with the binary string
let character = getChar(binaryCode: binary)

func getChar(binaryCode: String) -> (String) {
   // programm logic
   return result
}
var binary = "00000" //starting with the binary string
var character = getChar(binary)


function getChar(binary) {
   // programm logic
   return result
}
我完全不知道如何反转解码函数,将二进制字符串转换回连接字符。非常感谢您的帮助,谢谢!(我更喜欢只获取一些小代码片段,Swift或javascript——哪种语言不重要
!)

您可以使用基数
2
解析字符串,添加偏移量
10
,并将值转换为基数
36
的值

函数getCharacter(字符串){ return(parseInt(string,2)+10).toString(36); } 函数getBinary(字符串){ return('000000'+(parseInt(string,36)-10).toString(2)).slice(-5); } console.log(getCharacter('00000');//A. console.log(getCharacter('11000'));//Y console.log(getBinary('a'));//00000
console.log(getBinary('y'));//11000您可以使用基数
2
解析字符串,添加偏移量
10
,并将该值转换为基数
36
的值

函数getCharacter(字符串){ return(parseInt(string,2)+10).toString(36); } 函数getBinary(字符串){ return('000000'+(parseInt(string,36)-10).toString(2)).slice(-5); } console.log(getCharacter('00000');//A. console.log(getCharacter('11000'));//Y console.log(getBinary('a'));//00000 console.log(getBinary('y'));//11000您可以使用
init?(\utext:S,radix:Int=default),其中S:StringProtocol
初始值设定项将二进制字符串转换为整数,并将其用作访问字母表数组元素的索引。您还可以使用
字符串(u值:,基数:,大写:)
将数组索引转换为二进制的初始值设定项:

let alphabeth = ["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"]
var bins: [String] = []
for index in alphabeth.indices {
    let binary = String(index, radix: 2)
    let zeros = repeatElement("0", count: 5 - binary.count).joined()
    bins.append("\(zeros)\(binary)")
    print(alphabeth[index], bins.last!)
}
for binary in bins {
    if let index = Int(binary, radix: 2) {
        print(alphabeth[index])
    }   
}
您可以使用
init?(\utext:S,radix:Int=default),其中S:StringProtocol
初始值设定项将二进制字符串转换为整数,并将其用作访问字母表数组元素的索引。您还可以使用
字符串(u值:,基数:,大写:)
将数组索引转换为二进制的初始值设定项:

let alphabeth = ["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"]
var bins: [String] = []
for index in alphabeth.indices {
    let binary = String(index, radix: 2)
    let zeros = repeatElement("0", count: 5 - binary.count).joined()
    bins.append("\(zeros)\(binary)")
    print(alphabeth[index], bins.last!)
}
for binary in bins {
    if let index = Int(binary, radix: 2) {
        print(alphabeth[index])
    }   
}

正如Leo在的第一句中所说,可以将二进制字符串转换为Swift中的字符,如下所示:

let alphabetArray=["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", "", "", "", "", "", ""]
let string = "00010"
let c = alphabetArray[Int(string, radix: 2)!]
或者,您可以完全绕过alphabetArray,方法是:

let c = Character(Unicode.Scalar(Int(string, radix: 2)! + 97)!)

正如Leo在的第一句中所说,可以将二进制字符串转换为Swift中的字符,如下所示:

let alphabetArray=["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", "", "", "", "", "", ""]
let string = "00010"
let c = alphabetArray[Int(string, radix: 2)!]
或者,您可以完全绕过alphabetArray,方法是:

let c = Character(Unicode.Scalar(Int(string, radix: 2)! + 97)!)


亲爱的按了“讨厌”按钮的家伙!你能告诉我们还有什么可以改进的吗?如果你更喜欢js结果,我会省去swift部分…哪个答案最好?JS或SWIFT??然后我仍然会问两个问题,每种语言一个。“最佳”答案通常是最快、最短或解释最好的答案。现在你怎么能决定呢?我很好奇,你对这种奇怪的文本编码有什么用?亲爱的,按了“讨厌”按钮的家伙!你能告诉我们还有什么可以改进的吗?如果你更喜欢js结果,我会省去swift部分…哪个答案最好?JS或SWIFT??然后我仍然会问两个问题,每种语言一个。“最佳”答案通常是最快、最短或解释最好的答案。现在你怎么能决定呢?我很好奇,这么奇怪的文本编码有什么用?@jonas0000是的。这就是函数的作用。@jonas0000是的。这就是函数的作用。我可以推荐我们的主和救世主,
map
@Alexander kkk我也喜欢映射,但问题是如何将一个二进制转换成整数
Int(string,基数:2)
我只是尽量简化逻辑。我可以推荐我们的主和救世主,
map
@Alexander kkk我也喜欢映射,但问题是如何将一个二进制转换成整数
Int(string,radix:2)
我只是想让它尽可能简单地显示逻辑。我想知道为什么这个答案和我的答案完全一样,在我得到两个votes后,你描述了他能做什么,但你有点隐藏了线索。(我必须承认,直到我重新阅读了你的答案,我才意识到你答案第一句中的叙述暗示了我的答案。)我只是举了两个非常简单的例子来说明如何做到这一点。如果它真的困扰你,请随意编辑你的答案,以显示你的第一种方法的例子,如果你真的想,我可以删除这个。我不是想抢你的风头,只是想给你举一些简单实用的例子来说明如何做到这点。@robnoworries@LeoDabus-哈哈,现在我得到了澄清你答案的选票。@Rob我已经习惯了。我只是为了和像你这样的人交流才一直回答。我想知道为什么这个答案和我的答案完全一样,在我得到两个Votes之后。你描述了他能做什么,但你有点隐藏了线索。(我必须承认,直到我重新阅读了你的答案,我才意识到你答案第一句中的叙述暗示了我的答案。)我只是举了两个非常简单的例子来说明如何做到这一点。如果它真的困扰你,请随意编辑你的答案,以显示你的第一种方法的例子,如果你真的想,我可以删除这个。我不是想抢你的风头,只是想给你举一些简单实用的例子来说明如何做到这点。@robnoworries@LeoDabus-哈哈,现在我得到了澄清你答案的选票。@Rob我已经习惯了。我只是为了和你这样的人交流才一直回答。