wareInfo.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * @Author : zou.yingbin
  3. * @Create : 2022/3/23 11:05
  4. * @Modify : 2022/3/23 11:05
  5. * @note :
  6. */
  7. package client
  8. type wareInfo struct {
  9. buf []byte // 内容[报价开始(0x10):报价结束(0x11)]
  10. exchId string // 交易所id
  11. goodsCode string // 商品代码
  12. ask string // 卖价
  13. bid string // 买价
  14. last string // 最新价
  15. tm string // 时间
  16. }
  17. func (r *wareInfo) getField(tag byte) string {
  18. for i, v := range r.buf {
  19. if v == tag {
  20. for j, d := range r.buf[i:] {
  21. if d == 0x01 || d == 0x11 {
  22. buf := r.buf[i+2 : i+j]
  23. return string(buf)
  24. }
  25. }
  26. }
  27. }
  28. return ""
  29. }
  30. func (r *wareInfo) parseField() {
  31. r.goodsCode = r.getField(0x21)
  32. r.ask = r.getField(0x4c)
  33. r.bid = r.getField(0x42)
  34. r.last = r.getField(0x24)
  35. r.tm = r.getField(0x41)
  36. r.exchId = r.getField(0x56)
  37. if r.exchId == "200" {
  38. r.goodsCode = "200"
  39. }
  40. }
  41. // func (r *wareInfo) printInfo() {
  42. // if r.ask == "" {
  43. // return
  44. // }
  45. // log.Println(r.exchId, r.goodsCode, r.ask, r.bid, r.last, r.tm)
  46. // }
  47. // func (r *wareInfo) debugPrintAllField() {
  48. // if len(r.buf) <= 2 {
  49. // return
  50. // }
  51. // if r.buf[0] != 0x10 || r.buf[len(r.buf)-1] != 0x11 {
  52. // return
  53. // }
  54. // type Field struct {
  55. // Tag byte
  56. // Value string
  57. // }
  58. // var sField []Field
  59. // tmp := string(r.buf[2 : len(r.buf)-1])
  60. // //0x01 字段分割
  61. // strS := strings.Split(tmp, string([]byte{0x01}))
  62. // for _, v := range strS {
  63. // //0x02 值分割
  64. // split := strings.Split(v, string([]byte{0x02}))
  65. // if len(split) != 2 {
  66. // break
  67. // }
  68. // d := Field{
  69. // Tag: ([]byte(split[0]))[0],
  70. // Value: split[1],
  71. // }
  72. // sField = append(sField, d)
  73. // }
  74. // for _, v := range sField {
  75. // log.Printf("0x%0x %s\n", v.Tag, v.Value)
  76. // }
  77. // }