Re: Format real to byte [], NOT string
From: Ignacio Machin \( .NET/ C# MVP \) ("Ignacio)
Date: 10/28/04
- Next message: Nicholas Paldino [.NET/C# MVP]: "Re: Stand alone Executable return argument"
- Previous message: Sunny: "Re: Stand alone Executable return argument"
- In reply to: Dennis Myrén: "Format real to byte [], NOT string"
- Next in thread: Dennis Myrén: "Re: Format real to byte [], NOT string"
- Reply: Dennis Myrén: "Re: Format real to byte [], NOT string"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 28 Oct 2004 09:29:55 -0400
Hi,
> For instance, from an integer of value 123, i want:
> new byte [3] { ASCII.Digit1, ASCII.Digit2, ASCII.Digit3 }
I think you have an understanding problem about the types, I will try to
explain the differences but I think it's not an easy going.
An integer is just a set of bits , you can interprete it in different ways,
if you use decimal you may see it as 123 , if you use hex you get 7B, the
thing is that THE SAME sequence of bits is interpreted in different ways
(maybe the "interpreted" word is not the best , printed is more accurate ).
Also remember that 123 as an integer is a whole thing, is not a thing
composed of three subcomponents ( 1 , 2, 3 ) that you can access it
independently.
This is where the conversion takes part, you want to CHANGE the way an
integer is represented, hence you have to make some operations, you can have
two options:
1- Convert to a string, this work cause the string representation of 123 is
composed of 3 "subcomponents" that you can access independently : '1' , '2',
'3'
2- Make the conversion using numeric method:
digit1 = 123/100
...
A similar thing with the double
Cheers,
--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
> I have managed to write my own formatting routines for
> integer types ushort, short, uint, int, ulong and long
> that create a byte array directly without walking via string.
>
> But the floating point formatting routines is kind of complicated,
> i rather not writing them if someone else has already done it and are
> willing to share
> that or (but i have never seen anything like it) if the .NET framework
> provides something
> for this. I am looking to be as efficient as possible
> (that is why i am interested in this in the first place).
>
> By now, i have to do a Math.Round, then format the number into string(also
> passing a NumberFormatInfo),
> then create a byte array from that. It is just too much overhead.
>
> I always want the real numbers formatted with a maximum precision of 5
> decimals,
> using '.' for number group separator.
> For instance, from a float of value 3.14F, i want:
> new byte [4] { ASCII.Digit3, ASCII.Dot, ASCII.Digit1, ASCII.Digit4 };
>
>
> If there is nothing like it, do you know where to find information
> about the internal bit-level RAM representation of System.Single/Double?
>
>
> How can i solve this?
>
>
>
>
> --
> Regards,
> Dennis JD Myrén
> Oslo Kodebureau
>
>
- Next message: Nicholas Paldino [.NET/C# MVP]: "Re: Stand alone Executable return argument"
- Previous message: Sunny: "Re: Stand alone Executable return argument"
- In reply to: Dennis Myrén: "Format real to byte [], NOT string"
- Next in thread: Dennis Myrén: "Re: Format real to byte [], NOT string"
- Reply: Dennis Myrén: "Re: Format real to byte [], NOT string"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|