12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package util
- import (
- "crypto/md5"
- "io"
- )
- // big endian
- func BytesToUint64(b []byte) (v uint64) {
- length := uint(len(b))
- for i := uint(0); i < length-1; i++ {
- v += uint64(b[i])
- v <<= 8
- }
- v += uint64(b[length-1])
- return
- }
- func BytesToUint32(b []byte) (v uint32) {
- length := uint(len(b))
- for i := uint(0); i < length-1; i++ {
- v += uint32(b[i])
- v <<= 8
- }
- v += uint32(b[length-1])
- return
- }
- func BytesToUint16(b []byte) (v uint16) {
- v += uint16(b[0])
- v <<= 8
- v += uint16(b[1])
- return
- }
- func Uint64toBytes(b []byte, v uint64) {
- for i := uint(0); i < 8; i++ {
- b[7-i] = byte(v >> (i * 8))
- }
- }
- func Uint32toBytes(b []byte, v uint32) {
- for i := uint(0); i < 4; i++ {
- b[3-i] = byte(v >> (i * 8))
- }
- }
- func Uint16toBytes(b []byte, v uint16) {
- b[0] = byte(v >> 8)
- b[1] = byte(v)
- }
- func Uint8toBytes(b []byte, v uint8) {
- b[0] = byte(v)
- }
- // returns a 64 bit big int
- func HashStringToLong(dir string) (v int64) {
- h := md5.New()
- io.WriteString(h, dir)
- b := h.Sum(nil)
- v += int64(b[0])
- v <<= 8
- v += int64(b[1])
- v <<= 8
- v += int64(b[2])
- v <<= 8
- v += int64(b[3])
- v <<= 8
- v += int64(b[4])
- v <<= 8
- v += int64(b[5])
- v <<= 8
- v += int64(b[6])
- v <<= 8
- v += int64(b[7])
- return
- }
|