parent
036ce8bc04
commit
58ddf2365a
@ -1,5 +1,41 @@ |
|||||||
package main |
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
) |
||||||
|
|
||||||
func main() { |
func main() { |
||||||
|
a := "123456" |
||||||
|
b := true |
||||||
|
|
||||||
|
fmt.Println(s(a, b)) |
||||||
|
} |
||||||
|
|
||||||
|
func s(origin string, b bool) (result []rune) { |
||||||
|
data := []rune(origin) |
||||||
|
dataLen := len(origin) |
||||||
|
|
||||||
|
resultLen := (dataLen / 4) + 1 |
||||||
|
if b { |
||||||
|
result = make([]rune, resultLen+1) |
||||||
|
result[resultLen] = rune(resultLen) |
||||||
|
} else { |
||||||
|
result = make([]rune, resultLen) |
||||||
|
} |
||||||
|
|
||||||
|
for i := 0; i < dataLen; i += 4 { |
||||||
|
result[i>>2] = |
||||||
|
getCharAt(data, i, dataLen) | getCharAt(data, i+1, dataLen)<<8 | getCharAt(data, i+2, dataLen)<<16 | |
||||||
|
getCharAt(data, i+3, dataLen)<<24 |
||||||
|
} |
||||||
|
|
||||||
|
return result |
||||||
|
} |
||||||
|
|
||||||
|
func getCharAt(str []rune, index int, length int) rune { |
||||||
|
if index >= length { |
||||||
|
return 0 |
||||||
|
} else { |
||||||
|
return str[index] |
||||||
|
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,47 @@ |
|||||||
|
package encode |
||||||
|
|
||||||
|
func XEncode(str string, key string) string { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func s(origin string, b bool) (result []rune) { |
||||||
|
data := []rune(origin) |
||||||
|
dataLen := len(origin) |
||||||
|
|
||||||
|
resultLen := (dataLen / 4) + 1 |
||||||
|
if b { |
||||||
|
result = make([]rune, resultLen+1) |
||||||
|
result[resultLen] = rune(resultLen) |
||||||
|
} else { |
||||||
|
result = make([]rune, resultLen) |
||||||
|
} |
||||||
|
|
||||||
|
for i := 0; i < dataLen; i += 4 { |
||||||
|
result[i>>2] = get(data, i, dataLen) | get(data, i+1, dataLen)<<8 | get(data, i+2, dataLen)<<16 | get(data, i+3, dataLen)<<24 |
||||||
|
} |
||||||
|
|
||||||
|
return result |
||||||
|
} |
||||||
|
|
||||||
|
func l(a string, b bool) (result []rune) { |
||||||
|
d := len(a) |
||||||
|
data := []rune(a) |
||||||
|
|
||||||
|
c := d - 1<<2 |
||||||
|
|
||||||
|
if b { |
||||||
|
m := int(data[d-1]) |
||||||
|
if m < c-3 || m > c { |
||||||
|
return nil |
||||||
|
} |
||||||
|
c = m |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func get(str []rune, index int, length int) rune { |
||||||
|
if index >= length { |
||||||
|
return 0 |
||||||
|
} else { |
||||||
|
return str[index] |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue