Guest User

Untitled

a guest
Nov 21st, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "bytes"
  6. "encoding/binary"
  7. "net"
  8. )
  9.  
  10. type myEvent struct {
  11. IP_version int32
  12. Ipv6_src_addr [16]byte
  13. }
  14.  
  15.  
  16. func readFromByteArrayIntoStruct() {
  17.  
  18. // create event
  19. ip := net.ParseIP("2001::face")
  20. var ipBytes [16]byte;
  21. copy(ipBytes[:], ip.To16())
  22. event := myEvent {
  23. IP_version: 4,
  24. Ipv6_src_addr: ipBytes,
  25. }
  26.  
  27. // convert to bytes
  28. buf := new(bytes.Buffer)
  29. if err := binary.Write(buf, binary.BigEndian, event); err != nil {
  30. fmt.Println("binary.Write failed:", err)
  31. return
  32. }
  33. eventBytes := buf.Bytes()
  34. fmt.Println(buf.Len(), eventBytes)
  35.  
  36. // read back the bytes into a new event
  37. reader := bytes.NewReader(eventBytes)
  38. var decodedEvent myEvent
  39.  
  40. if err := binary.Read(reader, binary.BigEndian, &decodedEvent); err != nil {
  41. fmt.Println("binary.Read failed:", err)
  42. } else {
  43. fmt.Println(decodedEvent)
  44. }
  45. }
  46.  
  47. func main() {
  48. readFromByteArrayIntoStruct()
  49. }
Add Comment
Please, Sign In to add comment