Comments (2)
Here is the test which you can execute readily:
func TestUint32(t *testing.T) {
n := uint32(10)
v := []interface{}{n}
buf, err := msgpack.Marshal(v)
if err != nil {
t.Fatal(err)
}
var x interface{}
err = msgpack.Unmarshal(buf, &x)
if err != nil {
t.Fatal(err)
}
x2 := x.([]interface{})
if reflect.TypeOf(v[0]) != reflect.TypeOf(x2[0]) {
t.Fatalf("Type mismatch, expected %v, got %v", reflect.TypeOf(v[0]), reflect.TypeOf(x2[0]))
}
}
from msgpack.
There are 2 unrelated issues here:
- you are decoding into interface{} and for simplicity lib returns only int64 and uint64 when decoding numbers. If you need uint32 - replace interface{} with uint32.
- small uint32 numbers are encoded as uint8 (or just small number) to save space. Exact type is loosed, but it does not matter usually because you can decode number into int8/int16/int32/int64 as you need.
I agree that it is a bit confusing, but I think this is the right behavior that does not cause any problems in practise.
from msgpack.
Related Issues (20)
- Unmarshal an empty time object provides a problematic timezone HOT 3
- bug: some struct cant unmashall
- panic: reflect: reflect.Value.SetString using unaddressable value HOT 1
- Why NewDecoder return zero response ?
- Timezone information is not preserved when encoding time.Time HOT 1
- panic: reflect: reflect.Value.SetString using unaddressable value
- marshal []bytes panic HOT 2
- omitempty should work on time.Time
- msgpack.Unmarshal: msgpack: invalid code=0 decoding string/bytes length HOT 2
- marshal reflect.ValueOf panic
- Support decoding bytes in place
- Incorrect Error Message in float64 Method in decode_number.go
- Request to Support Decoding Double Type in float32 Method
- ci : Regarding the failure of the Go CI in GitHub Actions
- JSON Size Smaller Than MessagePack Go Implementation HOT 2
- v5 encoding.TextMarshaler and round tripping HOT 1
- Use encoding.TextUnmarshaler when MessagePack format is a str
- Can encode a map[int][whatever type], but cannot decode into the any type. Get invalid code=1 decoding string/bytes length, only in v5, works in v4
- `reflect.Value.SetString using unaddressable value` on concrete values contained within any structures
- Types with pointer receivers that are not pointers cause do not encode
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msgpack.