1. golang按位取反符号和异或符号都是^。




要限定类型或位数,否则按int打印(打印负数)。

  1. 数据存储编解码

float32储存为4个字节,int16存储为两个字节,数据大小端怎样存储?

参考:edgexfoundry/device-sdk-go/pkg/commandvalue.go

借助io.Reader,int16和float32限定了数据存储的字节数。




  1. float数据精度转换

golang支持两种浮点float32和float64,众所周知,涉及浮点数比较或运算会遇到精度问题,具体要根据golang实现IEEE 754的情况定。

默认情况下,float32精度是小数后7位,float64精度是小数后15位。浮点数比较时取精度范围内的数据,范围外根据存储情况五舍六入(5实际存储时可能是5.9舍,可能是5.99入)。




小数点后保留两位小数:




  1. golang最大数值




参考:golang最大无符号数

对于不确定位数的uint,最大的无符号数和-1在位数上是一样的。但是,无论是 const MaxUint uint = -1 // Error: negative value , 还是const MaxUint uint = uint(-1) // Error: negative value,都不能通过编译,原因自然是类型与范围的冲突了。但运行时,-1的值确实可以传递给无符号是,怎么通过编译,又将这个值传给无符号数呢?可以




这样就搞定了。另一种方法就是对0取反。区别是,0取反后,是无限多个1,那么有限范围的uint去接它,显然会被编译器认为损失精度了。办法是先构造出确定位数的0,再取反,如下:




这便是两种获得最大无符号数的方法了。

  1. more


参考: