hex decode 得到的值作为map的key不能互调的问题

phpstudyer · · 638 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

先说下场景,golang作为服务端,c++做的客户端(硬件,其他公司做的) 问题: 硬件对01170303001 转成hex 得到的值是00300031003100370030003300300033003000300031 服务端对01170303001 使用fmt.Sprintf("%X",01170303001)转成hex 得到的值是3031313730333033303031 00300031003100370030003300300033003000300031 和3031313730333033303031 使用hex.DecodeString() 解析出来 都是01170303001 但是如果声明一个map[string]interface{} 以第一个解析出来的01170303001作为key写入一个值 再用第二解析出来的01170303001作为key 去获取这个值 你会发现获取不到 本来正常来说01170303001转hex的话 直接fmt.Sprintf("%X",01170303001)就行了 得到3031313730333033303031 但是硬件那边使用内置方法得到的是00300031003100370030003300300033003000300031 如果要对齐的话 golang需要range []rune("01170303001") 然后挨个fmt.Sprintf("%04X",value) 然后拼接 反过来拿到的00300031003100370030003300300033003000300031 如果要向3031313730333033303031对齐的话 就需要去掉每个值前面的前导00 得到3031313730333033303031 再来转的话就没问题了 但是不管00300031003100370030003300300033003000300031还是3031313730333033303031 转过来都是01170303001 以01170303001作为key 切不能相互调用 这点我就迷茫了 内存里面存的这两个01170303001 我比较了下 不相等 但是 不相等的原因我就晓不得了 有知道原因的麻烦说下,在此谢过

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

638 次点击  
加入收藏 微博
4 回复  |  直到 2018-06-25 10:23:46
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传