1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 18:17:52 -05:00
v2fly/common/serial/numbers.go

73 lines
1.2 KiB
Go
Raw Normal View History

2015-12-03 10:57:23 -05:00
package serial
import (
"strconv"
)
type Uint16 interface {
Value() uint16
}
type Uint16Literal uint16
2016-01-18 19:21:07 -05:00
func ParseUint16(data []byte) Uint16Literal {
switch len(data) {
case 0:
return Uint16Literal(0)
case 1:
return Uint16Literal(uint16(data[0]))
default:
return Uint16Literal(uint16(data[0])<<8 + uint16(data[1]))
}
}
2015-12-03 10:57:23 -05:00
func (this Uint16Literal) String() string {
return strconv.Itoa(int(this))
}
func (this Uint16Literal) Value() uint16 {
return uint16(this)
}
2016-01-18 19:21:07 -05:00
func (this Uint16Literal) Bytes() []byte {
return []byte{byte(this >> 8), byte(this)}
}
2015-12-03 10:57:23 -05:00
type Int interface {
Value() int
}
type IntLiteral int
func (this IntLiteral) String() string {
return strconv.Itoa(int(this))
}
func (this IntLiteral) Value() int {
return int(this)
}
2015-12-12 07:11:49 -05:00
type Int64Literal int64
func (this Int64Literal) String() string {
return strconv.FormatInt(this.Value(), 10)
}
func (this Int64Literal) Value() int64 {
return int64(this)
}
func (this Int64Literal) Bytes() []byte {
value := this.Value()
return []byte{
byte(value >> 56),
byte(value >> 48),
byte(value >> 40),
byte(value >> 32),
byte(value >> 24),
byte(value >> 16),
byte(value >> 8),
byte(value),
}
}