• 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: CAF file, testing chunk types?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CAF file, testing chunk types?


  • Subject: Re: CAF file, testing chunk types?
  • From: Darren Minifie <email@hidden>
  • Date: Wed, 30 Sep 2009 22:01:41 -0700



On Wed, Sep 30, 2009 at 8:35 PM, Brian Willoughby <email@hidden> wrote:
Darren,

An ASCII string is a sequence of bytes, and thus there is no difference between big-endian and little-endian.  It's only when you deal with multi-byte numbers such as 16-bit integer or 32-bit integer or others that you must translate.

Thanks for your input here Brian.  I have two problems with this still however.  My first problem, which was partially answered, is the difference between:

'abcd'
"abcd"

When you say ASCII are you referring to the double quoted string literal?   My understanding is that the first example is in fact an int - a 32 bit value which in hex would be 0x41424344.  In this case endianness is important because a big endian machine would store this 4 byte type as:

41  |  42  | 43  | 44

and a little endian machine would store it as

44 | 43 | 42 | 41

I think what I'm confused about is, you say that an ASCII string is a sequence of bytes, so the order does not matter.  However, isn't that what endienness is all about?  The sequence in which the byes of a datatype are laid out. 

UInt32 chars = 'ABCD';

would print out 'DCBA' on a little endian machine.

I appreciate you taking the time to help with this basic question
 

Brian Willoughby
Sound Consulting



On Sep 30, 2009, at 20:15, Darren Minifie wrote:
I have one other related question about CAF files and endian-ness:

I have a method that looks at an NSData object (which is a CAF file in memory).  The method finds the chunk type and stores it as a string.  In the spec, the chunk type is defined as a UInt32, and is a seuqence of 4 chars.  Here is my method which produces correct output on a little endian machine:

-(NSString*)fileType{

   if(!fileType){
       char type [5];
       type[4] = '\0';
       memcpy(type, (char*)[fileData bytes], 4);
       fileType = [[NSString stringWithCString:type encoding:NSASCIIStringEncoding] retain];
   }
   return fileType;
}

If CAF files are in big-endian format, why does this method produce the correct result? In other words why don't have i have to do a ntohl() in this case to flip the enianness, like i have to in the case of reading the chunk length etc.

Thanks again.




--
Darren Minifie
Computer Science Masters Candidate
University of Victoria, BC. Canada
My Rants: www.noisyair.com
My Band: www.ohsnapmusic.com


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: CAF file, testing chunk types?
      • From: Brian Willoughby <email@hidden>
    • Re: CAF file, testing chunk types?
      • From: Darren Minifie <email@hidden>
References: 
 >CAF file, testing chunk types? (From: Darren Minifie <email@hidden>)
 >Re: CAF file, testing chunk types? (From: William Stewart <email@hidden>)
 >Re: CAF file, testing chunk types? (From: Darren Minifie <email@hidden>)
 >Re: CAF file, testing chunk types? (From: Brian Willoughby <email@hidden>)

  • Prev by Date: iPhoneMultichannelMixerTest And 3DMixer
  • Next by Date: Re: CAF file, testing chunk types?
  • Previous by thread: Re: CAF file, testing chunk types?
  • Next by thread: Re: CAF file, testing chunk types?
  • Index(es):
    • Date
    • Thread