On Fri, Oct 3, 2025 at 7:13 PM Rafael Mendoza
<[email protected]> wrote:

> Hi Jan, thanks for the reply but perhaps I didn't explain correctly. I didn't 
> mean to say the varint itself had any endianess but rather the decoded uint 
> itself when the uint is larger than 1 byte. For >=2 bytes uint, Uvarint 
> function is taking the most significant byte and placing it as the least 
> significant byte before the concatenation step. So the resulting uint (in 
> this case uint16) is different than the expected result.

It's hard to say much without seeing your code. Here's some code and
what it produces on LE/BE targets:

        package main

        import (
                "encoding/binary"
                "fmt"
                "runtime"
                "unsafe"
        )

        func main() {
                fmt.Printf("goos=%s goarch=%s\n", runtime.GOOS, runtime.GOARCH)
                buf := [...]byte{0x11, 0x22, 0x33, 0x44}
                fmt.Printf("buf=|% x|\n", buf)
                fmt.Printf("unsafe uint32 at buf=%#0x\n",
*(*uint32)(unsafe.Pointer(&buf[0])))
                s := buf[:]
                num := uint64(0x1234)
                s = s[:binary.PutUvarint(s, num)]
                fmt.Printf("s=|% x|\n", s)
                u, n := binary.Uvarint(s)
                fmt.Printf("u=%#0x n=%v\n", u, n)
        }

----
jnml@3900x:~/tmp/uvarint$ go run main.go
goos=linux goarch=amd64
buf=|11 22 33 44|
unsafe uint32 at buf=0x44332211
s=|b4 24|
u=0x1234 n=2
jnml@3900x:~/tmp/uvarint$
----
jnml@linux-s390x:~/tmp/uvarint$ go run main.go
goos=linux goarch=s390x
buf=|11 22 33 44|
unsafe uint32 at buf=0x11223344
s=|b4 24|
u=0x1234 n=2
jnml@linux-s390x:~/tmp/uvarint$
----

The encoding buffer `s` always contains the same byte sequence and
that sequence always decodes to the same number.

HTH

-j

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/CAA40n-VkdofKbnApYPXMPkMM6PDr5wxJJpfPb%2Bzcnp2ua7dfrQ%40mail.gmail.com.

Reply via email to