javaer to go之byte类型转换
来源:互联网 发布:软件系统项目总结 编辑:程序博客网 时间:2024/04/19 15:39
在Socket的Server和Client通信的过程中,传输的都是字节。而我们需要展示和使用的是字符串、整形等。这个时候,我们需要对字节进行处理,把byte类型的数据转成我们需要的类型。
1、[]byte与16进制字符串
- []byte转16进制字符串
import ( "bytes" "strconv")//byte转16进制字符串func ByteToHex(data []byte) string { buffer := new(bytes.Buffer) for _, b := range data { s := strconv.FormatInt(int64(b&0xff), 16) if len(s) == 1 { buffer.WriteString("0") } buffer.WriteString(s) } return buffer.String()}
因为要做字符串的拼接,所以我们通过bytes工具声明一个buffer,把strconv.FormatInt格式化单个byte的字符串写入buffer流中。
- 16进制字符串转[]byte
import ( "strconv")//16进制字符串转[]bytefunc HexToBye(hex string) []byte { length := len(hex) / 2 slice := make([]byte, length) rs := []rune(hex) for i := 0; i < length; i++ { s := string(rs[i*2 : i*2+2]) value, _ := strconv.ParseInt(s, 16, 10) slice[i] = byte(value & 0xFF) } return slice}
通过把字符快速地转成rune类型地方式形成数组,然后在循环里两位两位地再拼成字符串。
使用strconv.ParseInt把16进制的字符串转成10进制的整形。
最后再把整形转成byte放入切片中。
2、byte与unit8
很简单,golang中byte和unit8都是8位的,直接转换就可以。
- byte转unit8
i := uint8(b)
- unit8转byte转
var i uint8i = 1b := byte(i)
3、byte[]与unit
字节与16位、32位及64位无符号整形之前的转换可使用”encoding/binary”包下的BigEndian(高位编址)与LittleEndian(低位编址)来操作,他们都实现了ByteOrder接口。提供了8位以上的无符号整形与byte数组之前的转换接口。
type ByteOrder interface { Uint16([]byte) uint16 Uint32([]byte) uint32 Uint64([]byte) uint64 PutUint16([]byte, uint16) PutUint32([]byte, uint32) PutUint64([]byte, uint64) String() string}
如我们把一个byte数组转成16位的无符号整形:
runningNumber := binary.BigEndian.Uint16(data[34:36])
初学者注意:
在[]byte与uint转换的过程中,得确定[]byte的长度与类型的类型是否匹配。因为两者的转换是通过位移来实现的。
encoding/binary的部分源码:
func (bigEndian) Uint16(b []byte) uint16 { return uint16(b[1]) | uint16(b[0])<<8 }func (bigEndian) PutUint16(b []byte, v uint16) { b[0] = byte(v >> 8) b[1] = byte(v)}
2 0
- javaer to go之byte类型转换
- javaer to go之基础
- javaer to go之mysql操作
- javaer to go之TCP Socket与Goroutine
- javaer to go之简单的ORM封装
- Go语言学习之数据类型以及类型转换(The way to go)
- go string []byte相互转换
- Java byte类型转换
- byte类型转换运算
- go 类型转换
- Go语言类型转换
- Go类型转换 实现
- Java类型转换(int - byte[],float - byte[])
- Java类型转换(int - byte[],float - byte[])
- Java类型转换(int - byte[],float - byte[])
- Java类型转换(int - byte[],float - byte[])
- Go string to ascii byte array
- go hex string与[]byte转换
- httpclient 设置代理 PostMethod 示例
- Java图形界面基础案例分析(满天星)
- JS中使用onkeydown事件来实现键盘效果
- 【springboot】自定义模板配置
- linux环境下无阻塞键盘输入以及MAP容器中value为数组的一些问题
- javaer to go之byte类型转换
- IOS caf音频文件如何转化成mp3文件
- python学习2:urllib2
- 斗地主 - 获取扑克牌类型
- Sitemesh 3 的使用及配置
- Android实现第一次进入App时的引导学习界面
- Session的基本用法(增删改查)
- MMBFJ175 不同厂家,不可随意更换的分析
- 在Android studio中保存keystore