|
Posted by DM on 09/28/07 03:37
"The Natural Philosopher" <a@b.c> wrote in message
news:1190902272.21408.1@proxy02.news.clara.net...
> Jerry Stuckle wrote:
>> DM wrote:
>>> "Erwin Moller"
>>> <Since_humans_read_this_I_am_spammed_too_much@spamyourself.com> wrote in
>>> message news:46fb87ea$0$244$e4fe514c@news.xs4all.nl...
>>>> DM wrote:
>>>>> Hi All,
>>>>>
>>>>> I'm writing a program that connects to a data stream containing a
>>>>> number of
>>>>> different variable types. Ie 4 & 8 byte integers, ASCII characters and
>>>>> 8
>>>>> byte floats.
>>>>>
>>>>> I use fgetc to capture the data in characters then I reconstruct the
>>>>> variables from these bytes.
>>>>>
>>>>> For integers this is easy, just multiply the bytes by orders of 256 to
>>>>> get
>>>>> the right offset values. The thing I can't figure out is how to
>>>>> reconstruct
>>>>> a double precision floating point number from its 8 component bytes.
>>>>>
>>>>> Is there an easy way to do this in PHP? I couldn't find anything
>>>>> useful through
>>>>> Google...
>>>>>
>>>>> Any pointers would be greatly appreciated.
>>>>>
>>>>> -DM
>>>>>
>>>> Hi DM,
>>>>
>>>> This data stream, where is it coming from?
>>>> What program is producing it?
>>>> Also PHP?
>>>>
>>>> Regards,
>>>> Erwin Moller
>>>
>>> Hi Erwin, thanks for the reply.
>>>
>>> The data stream is coming from a custom Win32 Visual C++ real-time
>>> server program which pumps out up to 1,000,000 of these multi-type
>>> messages per day.
>>>
>>> I would like to grab and parse this data, then insert it into a
>>> postgreSQL database under Linux rather than looking for a Windows
>>> solution.
>>>
>>> I'm looking for a way to get this data into the postgres database so I
>>> can utillise a whole suite of PHP diagnostic & analysis program I wrote
>>> for another similar application.
>>>
>>> I had a look at the IEEE standard for double precision floats, but it
>>> looks like I would have to do around 10-15 calculations per message to
>>> manually restore the value. This would be impractical for the amount of
>>> through-put I am facing...
>>>
>>> -DM
>>>
>>
>> Personally, if I were looking at this much data, I'd be looking at a
>> compiled language such as C/C++. If the data is coming in in binary,
>> just stuff it in the appropriate bytes in a variable and you're done.
>>
>> Converting floating point variables is not fun, as you have found.
>>
> I'm leaning towards that too.
> C, with its ability to cast anything to anything, makes a dynamite comms
> type language.
>
> Ive written apache/SQL shims in C before - its not really worse than PHP -
> just a bit slower to debug.
>
Thanks for the advice.
It looks like the popular consensus is to write the program in another
language. I'm very rusty at C but I'll give it a go.
-DM
[Back to original message]
|