package serial

import (
	"encoding/hex"
	"strings"
)

func ByteToHexString(value byte) string {
	return hex.EncodeToString([]byte{value})
}

func BytesToUint16(value []byte) uint16 {
	return uint16(value[0])<<8 | uint16(value[1])
}

func BytesToUint32(value []byte) uint32 {
	return uint32(value[0])<<24 |
		uint32(value[1])<<16 |
		uint32(value[2])<<8 |
		uint32(value[3])
}

func BytesToInt64(value []byte) int64 {
	return int64(value[0])<<56 |
		int64(value[1])<<48 |
		int64(value[2])<<40 |
		int64(value[3])<<32 |
		int64(value[4])<<24 |
		int64(value[5])<<16 |
		int64(value[6])<<8 |
		int64(value[7])
}

func BytesToHexString(value []byte) string {
	strs := make([]string, len(value))
	for i, b := range value {
		strs[i] = hex.EncodeToString([]byte{b})
	}
	return "[" + strings.Join(strs, ",") + "]"
}