1 ASCII编码
//获取字符ascii编码
val c = 'a'
val value: Int = c.toInt()
println(value)
//获取字符串ascii
val str = "I love you"
//遍历获取每一个字符的ascii编码
val array = str.toCharArray()
for (ch in array) {
// println(ch)
println(ch.toInt())
}
使用StringBuilder:
val stringBuilder = StringBuilder()
for (ch in array) {
val result = ch.toInt();
// stringBuilder.append(result.toString() + " ")
stringBuilder.append("$result ")
}
println(stringBuilder.toString())
使用with:
with(stringBuilder){
for (ch in array) {
val result = ch.toInt();
this.append("$result ")
}
println(this.toString())
}
再次改进:
with(StringBuilder()){
for (ch in array) {
val result = ch.toInt();
append("$result ")
}
println(toString())
}
打印:73 32 108 111 118 101 32 121 111 117
2 凯撒加密
参考:
https://baike.baidu.com/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81/4905284?fr=aladdin
class CaesarCrypt {
/**
* 加密
* input:原文
* key:秘钥
*/
fun encrypt(input: String, key: Int): String {
val charArray = input.toCharArray()
return with(StringBuilder()) {
charArray.forEach {
//遍历每个字符,对ascii偏移
val c = it
//获取字符ascii
var ascii = c.toInt()
//移动
ascii += key
//转成字符
val result = ascii.toChar()
append(result)
}
toString()
}
}
/**
* 解密
* input:密文
* key:秘钥
*/
fun decrypt(input: String, key: Int): String {
val charArray = input.toCharArray()
return with(StringBuilder()) {
charArray.forEach {
//遍历每个字符,对ascii偏移
val c = it
//获取字符ascii
var ascii = c.toInt()
//移动
ascii -= key
//转成字符
val result = ascii.toChar()
append(result)
}
toString()
}
}
}
fun main(args: Array<String>) {
val command = "I love you"
val key = 2//秘钥
val encrypt = CaesarCrypt().encrypt(command, key)
val decrypt = CaesarCrypt().decrypt(encrypt, key)
println(encrypt)
println(decrypt)
}
打印:
K"nqxg"{qw
I love you
3 Byte和bit
- Byte:字节,数据存储单位
- bit:比特,又名 位。一个位要么0,要么1,数据传输的单位
- 一个字节占8位。
val ch = 'A'
//获取字符ascii
val ascii = ch.toInt()
println(ascii)//65
//二进制
val binary = Integer.toBinaryString(ascii)
println(binary)//1000001,8位,一个英文字符占1个字节