You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.3 KiB

  1. package util
  2. import "encoding/binary"
  3. // big endian
  4. func BytesToUint64Old(b []byte) (v uint64) {
  5. length := uint(len(b))
  6. for i := uint(0); i < length-1; i++ {
  7. v += uint64(b[i])
  8. v <<= 8
  9. }
  10. v += uint64(b[length-1])
  11. return
  12. }
  13. func BytesToUint32Old(b []byte) (v uint32) {
  14. length := uint(len(b))
  15. for i := uint(0); i < length-1; i++ {
  16. v += uint32(b[i])
  17. v <<= 8
  18. }
  19. v += uint32(b[length-1])
  20. return
  21. }
  22. func BytesToUint16Old(b []byte) (v uint16) {
  23. v += uint16(b[0])
  24. v <<= 8
  25. v += uint16(b[1])
  26. return
  27. }
  28. func Uint64toBytesOld(b []byte, v uint64) {
  29. for i := uint(0); i < 8; i++ {
  30. b[7-i] = byte(v >> (i * 8))
  31. }
  32. }
  33. func Uint32toBytesOld(b []byte, v uint32) {
  34. for i := uint(0); i < 4; i++ {
  35. b[3-i] = byte(v >> (i * 8))
  36. }
  37. }
  38. func Uint16toBytesOld(b []byte, v uint16) {
  39. b[0] = byte(v >> 8)
  40. b[1] = byte(v)
  41. }
  42. func BytesToUint64(b []byte) (v uint64) {
  43. return binary.BigEndian.Uint64(b)
  44. }
  45. func BytesToUint32(b []byte) (v uint32) {
  46. return binary.BigEndian.Uint32(b)
  47. }
  48. func BytesToUint16(b []byte) (v uint16) {
  49. return binary.BigEndian.Uint16(b)
  50. }
  51. func Uint64toBytes(b []byte, v uint64) {
  52. binary.BigEndian.PutUint64(b, v)
  53. }
  54. func Uint32toBytes(b []byte, v uint32) {
  55. binary.BigEndian.PutUint32(b, v)
  56. }
  57. func Uint16toBytes(b []byte, v uint16) {
  58. binary.BigEndian.PutUint16(b, v)
  59. }
  60. func Uint8toBytes(b []byte, v uint8) {
  61. b[0] = byte(v)
  62. }