以下是利用标准库binary来进行编解码

编码 
①使用bytes.Buffer来存储编码生成的串
②使用binary.Write来编码存储在①的buf中

  1. package main
  2.  
  3. import (
  4. "bytes"
  5. "encoding/binary"
  6. "fmt"
  7. )
  8.  
  9. func main() {
  10. var pi float64 = 3.141592653589793
  11. buf := new(bytes.Buffer)
  12. err := binary.Write(buf, binary.LittleEndian, pi)
  13. // 这里可以继续往buf里写, 都存在buf里
  14. // binary.Write(buf, binary.LittleEndian, uint16(12345))
  15. if err != nil {
  16. fmt.Println("binary.Read failed:", err)
  17. }
  18. fmt.Print(buf.Bytes())
  19. // [24 45 68 84 251 33 9 64]
  20.  
  21. }

  解码 
①使用bytes.NewReader/bytes.Buffer来存储要解码的ascii串
②使用binary.Read来解码

  1. package main
  2.  
  3. import (
  4. "bytes"
  5. "encoding/binary"
  6. "fmt"
  7. )
  8.  
  9. func main() {
  10. var pi float64
  11. bpi := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40}
  12. buf := bytes.NewReader(bpi)
  13. err := binary.Read(buf, binary.LittleEndian, &pi)
  14. // 这里可以继续读出来存在变量里, 这样就可以解码出来很多, 读的次序和变量类型要对
  15. // binary.Read(buf, binary.LittlEndian, &v2)
  16. if err != nil {
  17. fmt.Println("binary.Read failed:", err)
  18. }
  19. fmt.Print(pi)
  20. // 3.141592653589793
  21. }

  

Multi模式

  • 解码

    ing

  • 编码

  1. package main
  2.  
  3. import (
  4. "bytes"
  5. "encoding/binary"
  6. "fmt"
  7. )
  8.  
  9. func main() {
  10. buf := new(bytes.Buffer)
  11. var data = []interface{}{
  12. uint16(61374),
  13. int8(-54),
  14. uint8(254),
  15. }
  16. for _, v := range data {
  17. err := binary.Write(buf, binary.LittleEndian, v)
  18. if err != nil {
  19. fmt.Println("binary.Write failed:", err)
  20. }
  21. }
  22. fmt.Printf("%x", buf.Bytes())
  23. // beefcafe 这个是16进制串
  24. // 这里转换为了16进制整数的串?
  25. }

 转自:http://studygolang.com/articles/713

go 二进制数据处理的更多相关文章

  1. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

  2. Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析

    以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一 ...

  3. node.js—Buffer类(二进制数据处理模块)

    Buffer类概述 一个用于更好的操作二进制数据的类 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流 Node为我们提供了一个更加方便的去操作这种数据流的类 Buffer,他是一个全局的 ...

  4. erlang二进制

    在Erlang中写处理二进制数据的代码是洋溢着幸福感的,它对于二进制强大的表现力甚至能让你忘掉了它种种不便,今天我们说说Erlang的二进制数据处理. Erlang中bit string代表无类型的内 ...

  5. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  6. [Erlang 0110] Erlang Abstract Format , Part 1

    Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract ...

  7. php配置参数.md

    php 5.5 配置文件 php.ini Options user_ini.filename string 设定了 PHP 会在每个目录下搜寻的文件名:如果设定为空字符串则 PHP 不会搜寻.默认值是 ...

  8. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

  9. Python2.2-原理之类型和运算

    此节来自于<Python学习手册第四版>第二部分 一.Python对象类型(第4章) 1. Python可以分解成模块.语句.表达式以及对象:1.程序由模块构成:2.模块包含语句:3.语句 ...

随机推荐

  1. springboot项目:以run as-->spring boot app方式启动,配置热部署(亲测可用!!!)

    1.在pom.xml中添加热部署依赖 <!-- 热部署 --> <!-- devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.prop ...

  2. UOJ269. 【清华集训2016】如何优雅地求和 [生成函数]

    传送门 思路 神仙题.jpg 脑子一抽,想把\(f(x)\)表示成下降幂的形式,也就是 \[ f(x)=\sum_{i=0}^m f_ix_{(i)}\\ x_{(i)}=\prod_{k=0}^{i ...

  3. kill函数

    kill函数/命令产生信号 kill命令产生信号:kill -SIGKILL pid kill函数:给指定进程发送指定信号(不一定杀死) int kill(pid_t pid, int sig);   ...

  4. 1-4CMYK色彩模式

    http://www.missyuan.com/thread-350717-1-1.html CMYK也称作印刷色彩模式,顾名思义就是用来印刷的. 只要是在印刷品上看到的图像,就是CMYK模式表现的 ...

  5. Js 之将字符串当变量使用

    var page1 = 0; var p = "page1"; //修改值 window[p] += 1; var value = eval(p);

  6. python线程+队列(queue)

    ---恢复内容开始--- python的线程学习 用处 pocpiliang脚本的编写 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程.语法如下: _thr ...

  7. @Transactional注解详细用法

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型, ...

  8. python Image 模块处理图片

    Python-Image 基本的图像处理操作,有需要的朋友可以参考下. Python 里面最常用的图像操作库是 pip install Pillow #安装模块 from PIL import Ima ...

  9. Firefox Chrome Http请求插件

    Firefox:HttpRequester Chrome:Advanced Rest Client

  10. prometheus监控插件mysqld_exporter

    1,首先需要增加授权 mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost' IDEN ...