bwanab
Hi. I’m new to elixir, so this could be obvious. I’m reading and writing to a device that uses a binary line format. The format is fixed. It also has integer fields, but they are easy to interpret. Floats and doubles are a bit harder, so I’m wondering and hoping that this is a problem that’s already been solved.
Here’s an example of what I’m looking at:
SSSSSSSSSSSSIIIIIIIIFFFFDDDDDDDD
Where S..S is a string descriptor.
IIII is an integer that I unpack with ((i1 <<< 32) + (i2 <<< 16) + (i3 <<< 8) + i4)
The ones I’m struggling with are FFFF (32 bit float) and DDDDDDDD (double prec float).
I know I can look at the IEEE-754 spec and figure this out, but I’m thinking there might be a solution already. For example in python given the FFFF, I can use struct.unpack(FFFF) to get the floating point value.
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #elixirconf-us
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming











Showing Posts 1 to 7- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
NobbZ
This should totally do it for you, unless you have to deal with NaN and infinties…
bwanab
Thanks. That’s just what I was looking for. NaN and infinity should be caught before they get on the line, so I think we’re good.
hauleth
Just remember that binary pattern matching also supports integers, so instead of manual addition and shifts you can do:
That is why I love working with binary data in Erlang. It is just so enormously easy.
bwanab
Thank you very much. That’s very helpful.
ityonemo
probably not an issue, but if things go south don’t forget to check the endianness (there are extra decorators for that if you need it).
bwanab
I figured out I needed big-integer instead of little. Is there a good list of all the decorators? I looked briefly and didn’t find one.
hauleth
It is in docs for
<<>>/1.