blob: 3448a13786e6f1f0317eb590eef73798061ad8c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package main
import (
"fmt"
"os"
"regexp"
"strconv"
)
func main() {
n, _ := strconv.Atoi(os.Args[1])
fmt.Print("Output: ")
fmt.Println(swapBits(n))
}
func swapBits(n int) int {
binary := fmt.Sprintf("%08b", n)
re := regexp.MustCompile(`..`)
bits := re.FindAllString(binary, -1)
binary_reversed := ""
for _, bit := range bits {
binary_reversed = binary_reversed + Reverse(bit)
}
new_int, _ := strconv.ParseInt(binary_reversed, 2, 64)
return int(new_int)
}
func Reverse(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
|