本文整理汇总了Golang中encoding/binary.ByteOrder.Uint64方法的典型用法代码示例。如果您正苦于以下问题:Golang ByteOrder.Uint64方法的具体用法?Golang ByteOrder.Uint64怎么用?Golang ByteOrder.Uint64使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类encoding/binary.ByteOrder
的用法示例。
在下文中一共展示了ByteOrder.Uint64方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: OpenRawDataFile
// Open a CDataFile
func OpenRawDataFile(name string, readOnly bool, byteOrder binary.ByteOrder, byteAlignment uint64, valueSize int) (*RawDataFile, error) {
flag := os.O_RDWR
if readOnly {
flag = os.O_RDONLY
}
file, err := os.OpenFile(name, flag, 0644)
if err != nil {
return nil, err
}
var univalToBytes func([]byte, unival)
var bytesToUnival func([]byte) unival
switch valueSize {
case 8:
univalToBytes = func(dst []byte, src unival) {
byteOrder.PutUint64(dst, src.AsUnsignedLong())
}
bytesToUnival = func(src []byte) unival {
return unival(byteOrder.Uint64(src))
}
default:
return nil, errors.Errorf("Invalid value size %d", valueSize)
}
return &RawDataFile{
file: file,
// byteOrder: byteOrder,
byteAlignment: byteAlignment,
valueSize: valueSize,
univalToBytes: univalToBytes,
bytesToUnival: bytesToUnival,
}, nil
}
示例2: ReadUint64
func (b *Buffer) ReadUint64(order binary.ByteOrder) (uint64, error) {
if b.readPos >= len(b.Buf)-8 {
return 0, io.EOF
}
u := order.Uint64(b.Buf[b.readPos:])
b.readPos += 8
return u, nil
}
示例3: Uint64
// Uint64 reads eight bytes from the provided reader using a buffer from the
// free list, converts it to a number using the provided byte order, and returns
// the resulting uint64.
func (l binaryFreeList) Uint64(r io.Reader, byteOrder binary.ByteOrder) (uint64, error) {
buf := l.Borrow()[:8]
if _, err := io.ReadFull(r, buf); err != nil {
l.Return(buf)
return 0, err
}
rv := byteOrder.Uint64(buf)
l.Return(buf)
return rv, nil
}
示例4: walksymtab
func walksymtab(data []byte, ptrsz int, fn func(sym) error) error {
var order binary.ByteOrder = binary.BigEndian
var s sym
p := data
for len(p) >= 4 {
// Symbol type, value.
if len(p) < ptrsz {
return &formatError{len(data), "unexpected EOF", nil}
}
// fixed-width value
if ptrsz == 8 {
s.value = order.Uint64(p[0:8])
p = p[8:]
} else {
s.value = uint64(order.Uint32(p[0:4]))
p = p[4:]
}
var typ byte
typ = p[0] & 0x7F
s.typ = typ
p = p[1:]
// Name.
var i int
var nnul int
for i = 0; i < len(p); i++ {
if p[i] == 0 {
nnul = 1
break
}
}
switch typ {
case 'z', 'Z':
p = p[i+nnul:]
for i = 0; i+2 <= len(p); i += 2 {
if p[i] == 0 && p[i+1] == 0 {
nnul = 2
break
}
}
}
if len(p) < i+nnul {
return &formatError{len(data), "unexpected EOF", nil}
}
s.name = p[0:i]
i += nnul
p = p[i:]
fn(s)
}
return nil
}
示例5: newSimpleProtocol
func newSimpleProtocol(n int, byteOrder binary.ByteOrder) *simpleProtocol {
protocol := &simpleProtocol{
n: n,
bo: byteOrder,
}
switch n {
case 1:
protocol.encodeHead = func(buffer []byte) {
buffer[0] = byte(len(buffer) - n)
}
protocol.decodeHead = func(buffer []byte) int {
return int(buffer[0])
}
case 2:
protocol.encodeHead = func(buffer []byte) {
byteOrder.PutUint16(buffer, uint16(len(buffer)-n))
}
protocol.decodeHead = func(buffer []byte) int {
return int(byteOrder.Uint16(buffer))
}
case 4:
protocol.encodeHead = func(buffer []byte) {
byteOrder.PutUint32(buffer, uint32(len(buffer)-n))
}
protocol.decodeHead = func(buffer []byte) int {
return int(byteOrder.Uint32(buffer))
}
case 8:
protocol.encodeHead = func(buffer []byte) {
byteOrder.PutUint64(buffer, uint64(len(buffer)-n))
}
protocol.decodeHead = func(buffer []byte) int {
return int(byteOrder.Uint64(buffer))
}
default:
panic("unsupported packet head size")
}
return protocol
}
示例6: walksymtab
func walksymtab(data []byte, fn func(sym) error) error {
if len(data) == 0 { // missing symtab is okay
return nil
}
var order binary.ByteOrder = binary.BigEndian
newTable := false
switch {
case bytes.HasPrefix(data, oldLittleEndianSymtab):
// Same as Go 1.0, but little endian.
// Format was used during interim development between Go 1.0 and Go 1.1.
// Should not be widespread, but easy to support.
data = data[6:]
order = binary.LittleEndian
case bytes.HasPrefix(data, bigEndianSymtab):
newTable = true
case bytes.HasPrefix(data, littleEndianSymtab):
newTable = true
order = binary.LittleEndian
}
var ptrsz int
if newTable {
if len(data) < 8 {
return &DecodingError{len(data), "unexpected EOF", nil}
}
ptrsz = int(data[7])
if ptrsz != 4 && ptrsz != 8 {
return &DecodingError{7, "invalid pointer size", ptrsz}
}
data = data[8:]
}
var s sym
p := data
for len(p) >= 4 {
var typ byte
if newTable {
// Symbol type, value, Go type.
typ = p[0] & 0x3F
wideValue := p[0]&0x40 != 0
goType := p[0]&0x80 != 0
if typ < 26 {
typ += 'A'
} else {
typ += 'a' - 26
}
s.typ = typ
p = p[1:]
if wideValue {
if len(p) < ptrsz {
return &DecodingError{len(data), "unexpected EOF", nil}
}
// fixed-width value
if ptrsz == 8 {
s.value = order.Uint64(p[0:8])
p = p[8:]
} else {
s.value = uint64(order.Uint32(p[0:4]))
p = p[4:]
}
} else {
// varint value
s.value = 0
shift := uint(0)
for len(p) > 0 && p[0]&0x80 != 0 {
s.value |= uint64(p[0]&0x7F) << shift
shift += 7
p = p[1:]
}
if len(p) == 0 {
return &DecodingError{len(data), "unexpected EOF", nil}
}
s.value |= uint64(p[0]) << shift
p = p[1:]
}
if goType {
if len(p) < ptrsz {
return &DecodingError{len(data), "unexpected EOF", nil}
}
// fixed-width go type
if ptrsz == 8 {
s.gotype = order.Uint64(p[0:8])
p = p[8:]
} else {
s.gotype = uint64(order.Uint32(p[0:4]))
p = p[4:]
}
}
} else {
// Value, symbol type.
s.value = uint64(order.Uint32(p[0:4]))
if len(p) < 5 {
return &DecodingError{len(data), "unexpected EOF", nil}
}
typ = p[4]
if typ&0x80 == 0 {
return &DecodingError{len(data) - len(p) + 4, "bad symbol type", typ}
}
typ &^= 0x80
s.typ = typ
p = p[5:]
}
//.........这里部分代码省略.........
示例7: readSectionHeaderBlockBody
func (s *Stream) readSectionHeaderBlockBody(headerData []byte) (header *SectionHeaderBlock, err error) {
//
// read byte-order magic, version and section length
//
bodyData, err := s.read(16)
if err != nil {
return nil, err
}
//
// read byte-order magic
//
var byteOrder binary.ByteOrder
if bodyData[0] == 0x1A && bodyData[1] == 0x2B && bodyData[2] == 0x3C && bodyData[3] == 0x4D {
byteOrder = binary.BigEndian
} else if bodyData[3] == 0x1A && bodyData[2] == 0x2B && bodyData[1] == 0x3C && bodyData[0] == 0x4D {
byteOrder = binary.LittleEndian
} else {
return nil, errors.New("invalid byte order mark")
}
//
// read other fields
//
versionMajor := byteOrder.Uint16(bodyData[4:6])
versionMinor := byteOrder.Uint16(bodyData[6:8])
sectionLength := int64(byteOrder.Uint64(bodyData[8:16]))
//
// Read options
//
totalLength := byteOrder.Uint32(headerData[4:8])
optsLen := totalLength - 28
rawOpts, err := s.readOptions(optsLen, byteOrder)
if err != nil {
return nil, err
}
opts, err := parseSectionHeaderOptions(rawOpts)
if err != nil {
return nil, err
}
//
// Read last block total length
//
_, err = s.readExactly(4)
if err != nil {
return nil, err
}
retval := &SectionHeaderBlock{
totalLength: totalLength,
ByteOrder: byteOrder,
VersionMajor: versionMajor,
VersionMinor: versionMinor,
SectionLength: sectionLength,
RawOptions: rawOpts,
Options: opts,
}
s.sectionHeader = retval
return retval, nil
}
示例8: convertTo64bit
// Convert raw image data into a 2d array of 64-bit labels
func (d *Data) convertTo64bit(geom dvid.Geometry, data []uint8, bytesPerVoxel, stride int) ([]byte, error) {
nx := int(geom.Size().Value(0))
ny := int(geom.Size().Value(1))
numBytes := nx * ny * 8
data64 := make([]byte, numBytes, numBytes)
var byteOrder binary.ByteOrder
if geom.DataShape().ShapeDimensions() == 2 {
byteOrder = binary.BigEndian // This is the default for PNG
} else {
byteOrder = binary.LittleEndian
}
switch bytesPerVoxel {
case 1:
dstI := 0
for y := 0; y < ny; y++ {
srcI := y * stride
for x := 0; x < nx; x++ {
binary.LittleEndian.PutUint64(data64[dstI:dstI+8], uint64(data[srcI]))
srcI++
dstI += 8
}
}
case 2:
dstI := 0
for y := 0; y < ny; y++ {
srcI := y * stride
for x := 0; x < nx; x++ {
value := byteOrder.Uint16(data[srcI : srcI+2])
binary.LittleEndian.PutUint64(data64[dstI:dstI+8], uint64(value))
srcI += 2
dstI += 8
}
}
case 4:
dstI := 0
for y := 0; y < ny; y++ {
srcI := y * stride
for x := 0; x < nx; x++ {
value := byteOrder.Uint32(data[srcI : srcI+4])
binary.LittleEndian.PutUint64(data64[dstI:dstI+8], uint64(value))
srcI += 4
dstI += 8
}
}
case 8:
dstI := 0
for y := 0; y < ny; y++ {
srcI := y * stride
for x := 0; x < nx; x++ {
value := byteOrder.Uint64(data[srcI : srcI+8])
binary.LittleEndian.PutUint64(data64[dstI:dstI+8], uint64(value))
srcI += 8
dstI += 8
}
}
default:
return nil, fmt.Errorf("could not convert to 64-bit label given %d bytes/voxel", bytesPerVoxel)
}
return data64, nil
}
示例9: reprDouble
func reprDouble(in []byte, bo binary.ByteOrder) string {
return fmt.Sprintf("%f", math.Float64frombits(bo.Uint64(in)))
}
示例10: rvalSLong8
func rvalSLong8(in []byte, bo binary.ByteOrder) reflect.Value {
return reflect.ValueOf(int64(bo.Uint64(in)))
}
示例11: reprSLong8
func reprSLong8(in []byte, bo binary.ByteOrder) string { return fmt.Sprintf("%d", int64(bo.Uint64(in))) }
示例12: decodeNumeric
// decodeNumeric decodes a simple stream of numeric or character data
func decodeNumeric(de dataElement, bo binary.ByteOrder) (interface{}, error) {
var b [8]byte
var bs []byte
if int(de.nBytes) > len(b) {
bs = make([]byte, de.nBytes)
} else {
bs = b[:de.nBytes]
}
_, err := de.r.ReadAt(bs, 0)
if err != nil {
return nil, err
}
switch de.dataType {
case miINT8:
val := make([]int8, de.nBytes)
for i, x := range bs {
val[i] = int8(x)
}
return val, nil
case miUINT8:
val := make([]uint8, de.nBytes)
copy(val, bs)
return val, nil
case miINT16:
val := make([]int16, de.nBytes/2)
for i := range bs {
val[i] = int16(bo.Uint16(bs[2*i:]))
}
return val, nil
case miUINT16:
val := make([]uint16, de.nBytes/2)
for i := range bs {
val[i] = bo.Uint16(bs[2*i:])
}
return val, nil
case miINT32:
val := make([]int32, de.nBytes/4)
for i := range bs {
val[i] = int32(bo.Uint32(bs[4*i:]))
}
return val, nil
case miUINT32:
val := make([]uint32, de.nBytes/4)
for i := range bs {
val[i] = bo.Uint32(bs[4*i:])
}
return val, nil
case miINT64:
val := make([]int64, de.nBytes/8)
for i := range bs {
val[i] = int64(bo.Uint64(bs[8*i:]))
}
return val, nil
case miUINT64:
val := make([]uint64, de.nBytes/8)
for i := range bs {
val[i] = bo.Uint64(bs[8*i:])
}
return val, nil
case miSINGLE:
val := make([]float32, de.nBytes/4)
for i := range bs {
val[i] = math.Float32frombits(bo.Uint32(bs[4*i:]))
}
return val, nil
case miDOUBLE:
val := make([]float64, de.nBytes/8)
for i := range bs {
val[i] = math.Float64frombits(bo.Uint64(bs[8*i:]))
}
return val, nil
case miUTF8:
return string(bs), nil
case miUTF16:
x := make([]uint16, de.nBytes/2)
for i := range bs {
x[i] = bo.Uint16(bs[2*i:])
}
return string(utf16.Decode(x)), nil
case miUTF32:
runes := make([]rune, de.nBytes/4)
for i := range runes {
runes[i] = rune(bo.Uint32(bs[4*i:]))
}
return string(runes), nil
}
return nil, nil
}
示例13: readFloat
func readFloat(buf []byte, byteOrder binary.ByteOrder) float64 {
u := byteOrder.Uint64(buf)
return math.Float64frombits(u)
}
示例14: NewCpuProfParser
func NewCpuProfParser(r io.Reader) (*CpuProfParser, error) {
b := bufio.NewReader(r)
chunk, err := b.Peek(16)
if err != nil {
return nil, err
}
// A CPU profile starts with integers 0, and 3, with program's
// word size and endianness.
size := 32
first := binary.LittleEndian.Uint64(chunk[:8])
if first == 0 {
size = 64
}
var order binary.ByteOrder
if size == 32 {
n := binary.LittleEndian.Uint32(chunk[4:8])
if n == 3 {
order = binary.LittleEndian
} else {
order = binary.BigEndian
}
} else {
n := binary.LittleEndian.Uint64(chunk[8:16])
if n == 3 {
order = binary.LittleEndian
} else {
order = binary.BigEndian
}
}
p := &CpuProfParser{R: b, Order: order, Size: size}
if size == 32 {
p.read = func() (n uint64, err error) {
s, err := b.Peek(4)
if err == nil {
n = uint64(order.Uint32(s[:]))
}
b.Read(s)
return
}
} else {
p.read = func() (n uint64, err error) {
s, err := b.Peek(8)
if err == nil {
n = order.Uint64(s)
}
b.Read(s)
return
}
}
headerCount, _ := p.read()
headerWords, _ := p.read()
version, _ := p.read()
period, _ := p.read()
padding, err := p.read()
if err != nil {
return nil, err
}
if headerCount != 0 || headerWords != 3 || version != 0 || padding != 0 {
return nil, errBadProfileHeader
}
p.Period = period
return p, nil
}
示例15: rvalDouble
func rvalDouble(in []byte, bo binary.ByteOrder) reflect.Value {
return reflect.ValueOf(math.Float64frombits(bo.Uint64(in)))
}