栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

记一次golang的踩坑经历(golang的byte类型与java的byte类型的差异)

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次golang的踩坑经历(golang的byte类型与java的byte类型的差异)

首先说下差异,java中byte是短整形,是有符号的,而golang中的byte其实是uint8,是无符号的int8

再说说怎么遇到这个坑的。

因为工作的问题需要把一段java加密程序用golang实现,其中一个方法是将java的long类型值进行“&”运算和“>>”偏移。
以下是java方法的截图。


很简单吧,我依样画葫芦写了一个golang的方法
这是我的golang方法


原以为大功告成,谁知道运算出的结果不一样,这是运算对比的截图(左边java,右边golang)


一开始我以为是“&”运算的问题,疯狂查资料(查了大概2小时),然而java和golang的官法资料都显示关于“&”运算它们的运算逻辑都是一样的。

我留意到计算中的正负值的问题。心想,同样的int值怎么会计算出的值有正有负呢,问题应该不是出在int上。那么,很可能出在byte上。
官方资料显示,java中byte是短整形,是有符号的,而golang中的byte其实是uint8,是无符号的int8.问题应该出在这里。于是我修改了方法,再次尝试。

 一次成功。这是最后的打印结果对比。


打印结果显示本次计算结果一样的。

最后吐槽下,真是坑啊,明明都是byte类型,不同语言中的值竟然不一样。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号