The same issue exists in ASN1 support, none for float type tag 9. I would love to add this support but I am unsure how to breakdown a float into mantissa, base and exponent. Here is a description of how ASN1 formats a REAL into the stream of bytes:
Type REAL takes values that are the machine representation of a real number, namely the triplet (m, b, e), where m is the mantissa (a signed number), b the base (2 or 10), and e the exponent (a signed number). For example, the representation of the value 3.14 for the variable Pi, declared as Pi ::= REAL, can be (314, 10, -2). Three special values, PLUS-INFINITY, 0, and MINUS-INFINITY, are also allowed.
Here are some sample values:
* 09 00 = 0 (zero) * 09 01 40 = +INF (infinity) * 09 01 41 = -INF * 09 08 03 2b 31 2e 30 65 2b 30 = "+1.0e+0" = 1.0 (exact decimal) * 09 05 80 fe 55 55 55 = 1398101.25 (binary, 0x555555 * 2^-2) * 09 06 83 00 fc 00 00 01 = 0.0625 (binary, 0x000001 * 2^-4)
I have not parsed out these samples into these components so it's greek.
Alan
On 10/11/2017 02:18 PM, Bert Freudenberg wrote:
On Wed, Oct 11, 2017 at 8:07 PM, Tobias Pape <Das.Linux@gmx.de mailto:Das.Linux@gmx.de>wrote:
> On 11.10.2017, at 19:59, Bert Freudenberg <bert@freudenbergs.de <mailto:bert@freudenbergs.de>> wrote: > > On Wed, Oct 11, 2017 at 5:24 PM, Tobias Pape <Das.Linux@gmx.de <mailto:Das.Linux@gmx.de>> wrote: > Hi all > > I'm a bit stumped… > > What is our canonical way to put a Float onto a (binary) stream? > To be precise a IEEE754 double precision 64-bit float onto a stream, of which I only know that it is a binary one. > > I found ByteArray>>doubleAt:{put:}bigEndian:, but they have neither senders nor test _and_ it is not a stream. > > What do y'all use? > > You write them as two words, like e.g. in DataStream>>writeFloat:. Quite. yes. But I find it strange that our read/write streams support various integer and string reading/writing helpers, but none for floats… Best regards -Tobias
I guess file formats using integers and strings are way more common than ones storing binary floats.
- Bert -