| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package util
- import (
- "encoding/binary"
- "fmt"
- "strconv"
- "strings"
- )
- // IntToBytes 将一个 4 字节数字转换为 byte 数组
- func IntToBytes(n int32) []byte {
- buf := make([]byte, 4)
- binary.BigEndian.PutUint32(buf, uint32(n)) // 使用 BigEndian 或 LittleEndian
- return buf
- }
- // Int16ToBytes 将一个 4 字节数字转换为 byte 数组
- func Int16ToBytes(n uint16) []byte {
- buf := make([]byte, 2)
- binary.BigEndian.PutUint16(buf, uint16(n)) // 使用 BigEndian 或 LittleEndian
- return buf
- }
- func ToHexBytes(bytes []byte) string {
- var hexBytes string
- for b := range bytes {
- hexBytes = fmt.Sprint(hexBytes, strconv.FormatInt(int64(bytes[b]), 16), " ")
- }
- return strings.TrimSpace(hexBytes)
- }
- // CRC16-CCITT 校验算法 (多项式0x1021)
- func Crc16CCITT(data []byte) uint16 {
- crc := uint16(0xFFFF)
- for _, b := range data {
- crc ^= uint16(b) << 8
- for i := 0; i < 8; i++ {
- if crc&0x8000 != 0 {
- crc = (crc << 1) ^ 0x1021
- } else {
- crc <<= 1
- }
- }
- }
- return crc
- }
|