parent
036ce8bc04
commit
58ddf2365a
@ -1,5 +1,41 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
) |
||||
|
||||
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