Forums > Dev

t_fourcc typedef and endianness

Feb 23 2014 | 12:40 pm


This is probably more of a general C question rather than max/msp.

In Max SDK 6.1.4 there is a typedef t_fourcc which is a 32 bit uint. It is there for conveniently storing 4 characters as I understand.

I know that:
‘M’ = 6d
‘T’ = 54
‘h’ = 68
‘d’ = 64

Now if I do this
t_fourcc midi = 'MThd';

is my value stored as 6d 54 68 64 starting from the smaller address name irrelevant of machine endianness? In contrast, for example, uint = 4
will be stored differently on a little endian machine and big endian machine (right?)

Jul 21 2014 | 7:03 am

To correctly handle endianess with four char codes you can byteswap as follows. Note that in this case typestr is 5 chars long to accomodate the NULL termination.

void fourcc_from_int(char *typestr, t_fourcc type)
	t_int32			type_swapped;
	type_swapped = BYTEORDER_SWAPW32(type);
	type_swapped = type;
	strncpy_zero(typestr, (char*)(&type_swapped), 5);
Viewing 2 posts - 1 through 2 (of 2 total)

Forums > Dev