| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /**
- * @Author : zou.yingbin
- * @Create : 2022/3/23 11:05
- * @Modify : 2022/3/23 11:05
- * @note :
- */
- package client
- type wareInfo struct {
- buf []byte // 内容[报价开始(0x10):报价结束(0x11)]
- exchId string // 交易所id
- goodsCode string // 商品代码
- ask string // 卖价
- bid string // 买价
- last string // 最新价
- tm string // 时间
- }
- func (r *wareInfo) getField(tag byte) string {
- for i, v := range r.buf {
- if v == tag {
- if i > 0 && r.buf[i-1] == 0x01 {
- for j, d := range r.buf[i:] {
- if d == 0x01 || d == 0x11 {
- buf := r.buf[i+2 : i+j]
- return string(buf)
- }
- }
- }
- }
- }
- return ""
- }
- func (r *wareInfo) parseField() {
- r.goodsCode = r.getField(0x21)
- r.ask = r.getField(0x4c)
- r.bid = r.getField(0x42)
- r.last = r.getField(0x24)
- r.tm = r.getField(0x41)
- r.exchId = r.getField(0x56)
- if r.exchId == "200" {
- r.goodsCode = "200"
- }
- }
- // func (r *wareInfo) printInfo() {
- // if r.ask == "" {
- // return
- // }
- // log.Println(r.exchId, r.goodsCode, r.ask, r.bid, r.last, r.tm)
- // }
- // func (r *wareInfo) debugPrintAllField() {
- // if len(r.buf) <= 2 {
- // return
- // }
- // if r.buf[0] != 0x10 || r.buf[len(r.buf)-1] != 0x11 {
- // return
- // }
- // type Field struct {
- // Tag byte
- // Value string
- // }
- // var sField []Field
- // tmp := string(r.buf[2 : len(r.buf)-1])
- // //0x01 字段分割
- // strS := strings.Split(tmp, string([]byte{0x01}))
- // for _, v := range strS {
- // //0x02 值分割
- // split := strings.Split(v, string([]byte{0x02}))
- // if len(split) != 2 {
- // break
- // }
- // d := Field{
- // Tag: ([]byte(split[0]))[0],
- // Value: split[1],
- // }
- // sField = append(sField, d)
- // }
- // for _, v := range sField {
- // log.Printf("0x%0x %s\n", v.Tag, v.Value)
- // }
- // }
|