• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: "byte orders" question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "byte orders" question


  • Subject: Re: "byte orders" question
  • From: Koen van der Drift <email@hidden>
  • Date: Fri, 25 Nov 2011 23:38:36 -0500

On Nov 25, 2011, at 7:07 PM, Glenn L. Austin wrote:

> On Nov 25, 2011, at 2:56 PM, Koen van der Drift wrote:
>
>> On Nov 25, 2011, at 5:44 PM, Scott Ribe wrote:
>>
>>> As another response suggested, what's wrong with ntohl???
>>
>> I implemented that function based on some code I found online, but got very weird results, which is why I asked here.  My knowledge on these esoteric functions apparently isn't up to par :)
>>
>> As long as I end up with an array of x,y values, I really don't care how I get there.  Eventually they will need to end up in an NSArray for further processing though.
>
> That function is already implemented on every machine that support networking -- including Mac OS X.  You don't need to implement it yourself -- just #include <arpa/inet.h>
>
> Do a man ntohl for more info.


I read that but am still confused :(

Here is what I am doing, I read an NSString from the raw data, an xml file using NSXMLParser. This works ok.  Then I convert that to an NSData object, and perform base64 decoding (using http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html):

NSData *data =  [string dataUsingEncoding:NSASCIIStringEncoding];
NSString *base64String = [data base64EncodedString];
NSData * base64DecodedData = [NSData dataFromBase64String:base64String];

I then retrieve chunks of 32 bytes as follows:

NSRange range = {n, 32};
NSData *chunk = [base64DecodedData subdataWithRange:range];

But I am struggling with how to use this with ntohl, similar to the code I am trying to implement:

                for (n = 0 ; n < (2 * count) ; n++)
                {
                   ((u_int32_t *) result)[n] = ntohl((u_int32_t) ((u_int32_t *) dataToConvert)[n]);
		}

Any help appreciated.  I am happy to send the raw string off-list if anyone wants to give it a try. The end results should give pairs of floats:

300.066772460938
1201.86157226562

301.141448974609
45845.18359375

301.215972900391
1430.0322265625

etc


Thanks,

- Koen.


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: "byte orders" question
      • From: Scott Ribe <email@hidden>
References: 
 >"byte orders" question (From: Koen van der Drift <email@hidden>)
 >Re: "byte orders" question (From: Ben Kennedy <email@hidden>)
 >Re: "byte orders" question (From: Koen van der Drift <email@hidden>)
 >Re: "byte orders" question (From: Scott Ribe <email@hidden>)
 >Re: "byte orders" question (From: Koen van der Drift <email@hidden>)
 >Re: "byte orders" question (From: "Glenn L. Austin" <email@hidden>)

  • Prev by Date: NSView mouseDown truncated coordinates
  • Next by Date: Is there any way to catch events "Browser tab has been closed"?
  • Previous by thread: Re: "byte orders" question
  • Next by thread: Re: "byte orders" question
  • Index(es):
    • Date
    • Thread