目录

go语言 byte 与 java byte 问题

目录

../../images/weixin_public.png

问题

java byte 的范围是 -128-127,而golang byte 是uint8的别名,范围是0-255

解决

方法一:把byte的二进制流写入文件,golang 再读这个文件即可。

方法二:0-127都不用转,小于0时,用256加上这个数即可得到java对应的golang 的byte值。即:-128->128,-127->129,….,-1->255。

例如,可以先用rune表示,再转成byte

1
2
3
4
5
6
7
8
9
func javaByteToGoByte(r rune) byte {
	if r < -128 || r > 127 {
		panic("超出byte 范围")
	}
	if r < 0 {
		return byte(256 + r)
	}
	return byte(r)
}

原文