2015-05-10 2 views
0

Что такое _byteswap_ulong в Голанге? Он существует как пакет?_byteswap_ulong в Голанге

Я попытался использовать двоичный пакет и поиграть с читателем, но не смог заставить его работать. Мне нужно поменять байты в переменной uint64.

Ввод 2832779. Выходной сигнал должен быть 8b392b.

ответ

0

Как сказал @David, используйте binary.ByteOrder Типу

package main 

import (
    "encoding/binary" 
    "fmt" 
) 

func main() { 
    value := make([]byte, 4) 

    // need to know the byte ordering ahead of time 
    binary.LittleEndian.PutUint32(value, 0x12345678) 

    fmt.Printf("%#v\n", value) 

    fmt.Printf("Big Endian Representation, 0x%X\n", binary.BigEndian.Uint32(value)) 
    fmt.Printf("Little Endian Representation, 0x%X\n", binary.LittleEndian.Uint32(value)) 
} 

Playground link

Этот выход будет:

[]byte{0x78, 0x56, 0x34, 0x12} 
Big Endian Representation, 0x78563412 
Little Endian Representation, 0x12345678 

Это тупоконечника и мало-Endian представления на несколько -endian server.

2

Пакет кодирования/бинарное имеет тип http://golang.org/pkg/encoding/binary/#ByteOrder порядком байтов

binary.LittleEndian 

и

binary.BigEndian 

Пусть вы переключаетесь на разных порядков.

Это не совсем то же самое, что это не просто замена байтов. Но вы можете получить то, что вам нужно.

Смежные вопросы