| Newsgroups |
php.general |
| Message-ID |
<[email protected]> |
I'm actually moving from a string-encoded transport to binary for
compactness. The array can potentially get pretty large. I'm shooting
for the smallest possible representation of the data, which is 1 char
and 1 short per data point.
On February 23, 2010, Rene Veerman <[email protected]> wrote:
> have you considered using json as transport?
> http://json.org/ has code you can re-use.
>
> On Tue, Feb 23, 2010 at 7:29 AM, [email protected]
> <[email protected]> wrote:
>>
>> I have a desktop app that has a data structure that looks like this:
>>
>> typedef struct MANGOpie
>> {
>>  unsigned char  mango;
>>  unsigned short  pie;
>> }
>> MANGOpie;
>>
>>
>>
>> I manage a C array of these things in memory:
>>
>> MANGOpie * pies = (MANGOpie *)malloc(count*sizeof(MANGOpie));
>>
>>
>>
>>
>> I pass these to a PHP script on my webserver who needs to unpack the array
>> of structs.
>>
>> The unpack() PHP function appears to be what I need, but it doesn't
>> like the
>> formatting I'm using to describe an array of these structs:
>>
>> "(Cmango/npie)*"
>>
>> What it doesn't like are the parentheses. Â I've tried brackets and curlies
>> too, but nothing works. Â I have to have the parentheses to tell the parser
>> to repeat the entire struct:
>>
>> mango
>> pie
>> mango
>> pie
>> mango
>> pie
>> ...
>>
>>
>>
>> Formatting without the parentheses -- "Cmango/npie*" -- is:
>>
>> mango
>> pie
>> pie
>> pie
>> pie
>> pie
>> ...
>>
>>
>>
>> One workaround is to drop the struct and just manage two separate parallel
>> arrays of each data type in the desktop app:
>>
>> unsigned char *  mangos = (unsigned char  *)malloc(count*sizeof(unsigned
>> char));
>> unsigned short *  pies  = (unsigned short *)malloc(count*sizeof(unsigned
>> short));
>>
>> With PHP unpack() format strings:
>>
>> "Cmango*"
>> "npie*"
>>
>> But, I'd rather keep the struct for the sake of code clarity and neatness.
>>
>>
>>
>> Another would be to iterate thru the binary data, unpacking one struct at a
>> time, but that would be slower, presumably.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Anyone know the trick to this?
>>
>> Thanks.
>>
>>
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>