Go 进制转换

// numFormat project main.go
package main

import (
	"bytes"
	"encoding/binary"
	"log"
	"reflect"
	"strconv"
)

func main() {
	log.SetFlags(log.Lshortfile)

	num := int64(123456789)

	for i := 2; i <= 36; i++ {
		str := strconv.FormatInt(num, i)
		log.Println("str = ", str)
	}

	/* 二进制到36进制各种转换 */
	num2 := uint64(123456789)
	for i := 2; i <= 36; i++ {
		str := strconv.FormatUint(num2, i)
		log.Println("str = ", str)
	}

	numbin := strconv.AppendUint(nil, num2, 2) //转换为二进制存入到 []byte 里面
	log.Println("numbin = ", numbin)
	log.Println("num2 = ", num2, " binary = ", string(numbin))
	log.Println(reflect.ValueOf(numbin).Index(0).Kind()) //uint8

	/*存入到 []byte 里面去*/
	buff := bytes.NewBuffer([]byte{})
	binary.Write(buff, binary.LittleEndian, num2)
	log.Println("num2 = ", num2, "byte littleEndian = ", buff.Bytes())
	log.Println(reflect.ValueOf(buff.Bytes()).Index(0).Kind()) //uint8

	var num3 uint64
	binary.Read(buff, binary.LittleEndian, &num3)
	log.Println("num3 = ", num3)

	st := []rune("你好, Hello!")
	log.Println(reflect.ValueOf(st).Index(0).Kind()) //int32
}

输出:

C:/Go/bin/go.exe build -i [D:/golang/src/numFormat]
成功: 进程退出代码 0.
D:/golang/src/numFormat/numFormat.exe  [D:/golang/src/numFormat]
main.go:19: str =  111010110111100110100010101
main.go:19: str =  22121022020212200
main.go:19: str =  13112330310111
main.go:19: str =  223101104124
main.go:19: str =  20130035113
main.go:19: str =  3026236221
main.go:19: str =  726746425
main.go:19: str =  277266780
main.go:19: str =  123456789
main.go:19: str =  63762a05
main.go:19: str =  35418a99
main.go:19: str =  1c767471
main.go:19: str =  12579781
main.go:19: str =  ac89bc9
main.go:19: str =  75bcd15
main.go:19: str =  51g2a21
main.go:19: str =  3b60f89
main.go:19: str =  2bg64ae
main.go:19: str =  1ibc1j9
main.go:19: str =  194gh7f
main.go:19: str =  11l0805
main.go:19: str =  j43jfb
main.go:19: str =  fc2egl
main.go:19: str =  cg15le
main.go:19: str =  aa44a1
main.go:19: str =  8g86ni
main.go:19: str =  74nqb1
main.go:19: str =  60fshj
main.go:19: str =  52ce69
main.go:19: str =  49l302
main.go:19: str =  3lnj8l
main.go:19: str =  353c3r
main.go:19: str =  2od2i1
main.go:19: str =  2c9g1t
main.go:19: str =  21i3v9
main.go:26: str =  111010110111100110100010101
main.go:26: str =  22121022020212200
main.go:26: str =  13112330310111
main.go:26: str =  223101104124
main.go:26: str =  20130035113
main.go:26: str =  3026236221
main.go:26: str =  726746425
main.go:26: str =  277266780
main.go:26: str =  123456789
main.go:26: str =  63762a05
main.go:26: str =  35418a99
main.go:26: str =  1c767471
main.go:26: str =  12579781
main.go:26: str =  ac89bc9
main.go:26: str =  75bcd15
main.go:26: str =  51g2a21
main.go:26: str =  3b60f89
main.go:26: str =  2bg64ae
main.go:26: str =  1ibc1j9
main.go:26: str =  194gh7f
main.go:26: str =  11l0805
main.go:26: str =  j43jfb
main.go:26: str =  fc2egl
main.go:26: str =  cg15le
main.go:26: str =  aa44a1
main.go:26: str =  8g86ni
main.go:26: str =  74nqb1
main.go:26: str =  60fshj
main.go:26: str =  52ce69
main.go:26: str =  49l302
main.go:26: str =  3lnj8l
main.go:26: str =  353c3r
main.go:26: str =  2od2i1
main.go:26: str =  2c9g1t
main.go:26: str =  21i3v9
main.go:30: numbin =  [49 49 49 48 49 48 49 49 48 49 49 49 49 48 48 49 49 48 49 48 48 48 49 48 49 48 49]
main.go:31: num2 =  123456789  binary =  111010110111100110100010101
main.go:32: uint8
main.go:37: num2 =  123456789 byte littleEndian =  [21 205 91 7 0 0 0 0]
main.go:38: uint8
main.go:42: num3 =  123456789
main.go:45: int32
成功: 进程退出代码 0.

注:

[]rune 元素对应的类型为 int32

[]byte 元素对应的类型为 uint8

转载于:https://my.oschina.net/tsh/blog/1619887

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值