[Tutor] Associate decimal values with an integer range
sparkle Plenty
sparkle.plenty12481632 at gmail.com
Tue Apr 30 20:13:39 CEST 2013
On Mon, Apr 29, 2013 at 11:27 AM, Oscar Benjamin <oscar.j.benjamin at gmail.com
> wrote:
> On 29 April 2013 15:28, sparkle Plenty <sparkle.plenty12481632 at gmail.com>
> wrote:
> > Hi, I need some hints on where to start solving this problem.
> > I have to interpret a one-byte floating point number as a range between 0
> > and 240. This is for a gui that controls an amplifier. I am getting a
> > value such as 0.8367 from a fader control, and my Python is interpreting
> it
> > as either a 0 or 1. I need to define this number to Python as an integer
> > value between 0 and 240. I know that in hex I have the potential for
> > numbers from 0 to 255 within my one byte of available space, and the
> value
> > will be sent from gui to amp and back as a packed one-byte number. I
> have
> > looked at the math module and so far, I am still stuck.
>
> You need to define the range of values that you will accept. If you
> want the floating point numbers to map linearly to integers you can
> then use:
>
> byte = int(241 * float_value / max_float_value)
>
> This will give a value between 0 and 240 inclusive for any positive
> float_value that is less than max_float_value. The integer values will
> be approximately proportional to the float values.
>
> You may also want to check for overflow:
>
> byte = min(byte, 240)
>
> > Alas, business calc was a long time ago, and I never studied logarithms.
> I
> > expect the answer would be easier to find if I had more math.
>
> Logarithms would be useful for a different (non-linear) type of
> scaling. I can't tell you whether or not you want logarithmic scaling
> since I'm not sure what the byte integer is needed for. If you did
> want to use logarithmic scaling then you could do something like:
>
> byte = int((241 / math.log(2)) * math.log(1 + float_value /
> max_float_value))
>
>
> Oscar
>
Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20130430/a8925ada/attachment.html>
More information about the Tutor
mailing list