| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package utils
- // IsBigEnd 判断是否大端
- func IsBigEnd() bool {
- var (
- v3 uint32
- b3 [4]byte
- )
- v3 = 257
- b3[0] = uint8(v3)
- b3[1] = uint8(v3 >> 8)
- b3[2] = uint8(v3 >> 16)
- b3[3] = uint8(v3 >> 24)
- if b3[0] == 1 {
- return false
- }
- return true
- }
- func IntoByte(c int) byte {
- var (
- b3 [4]byte
- )
- b3[0] = uint8(c)
- b3[1] = uint8(c >> 8)
- b3[2] = uint8(c >> 16)
- b3[3] = uint8(c >> 24)
- if IsBigEnd() {
- return b3[3]
- }
- return b3[0]
- }
- // HfWord2byte 将一个int16转换为两个byte
- func HfWord2byte(obj int) (slice []byte) {
- slice = append(slice, IntoByte(obj>>8))
- slice = append(slice, IntoByte(obj&0xFF))
- return
- }
- // Word2byte 将一个int转换为四个byte
- func Word2byte(obj int) (slice []byte) {
- slice = append(slice, IntoByte(obj>>24))
- slice = append(slice, IntoByte(obj>>16))
- slice = append(slice, IntoByte(obj>>8))
- slice = append(slice, IntoByte(obj&0xFF))
- return
- }
- func CalCRC16HJ212(data []byte) uint16 {
- var (
- crc uint16 = 0xFFFF
- iNum uint16 = 0
- )
- length := len(data)
- for i := 0; i < length; i++ {
- iNum = uint16(data[i])
- crc = (crc >> 8) & 0x00FF
- crc = crc ^ iNum
- for j := 0; j < 8; j++ {
- flag := crc % 2
- crc = crc >> 1
- if flag == 1 {
- crc = crc ^ 0xA001
- }
- }
- }
- return crc
- }
|