>>59
普通にこういう感じでいいのかな

void writeBytes(FILE *f, unsigned char *s, size_t l)
{
if (fwrite(s, 1, l, f) != l) {
exit(1);
}
}

void writeUlong(FILE *f, unsigned long l)
{
unsigned char s[4];
s[0] = (unsigned char)(l >> 24) & 0xFF;
s[1] = (unsigned char)(l >> 16) & 0xFF;
s[2] = (unsigned char)(l >> 8) & 0xFF;
s[3] = (unsigned char)l & 0xFF;
writeBytes(f, s, 4);
}

void writeUshort(FILE *f, unsigned short w)
{
unsigned char s[2];
s[0] = (unsigned char)(w >> 8) & 0xFF;
s[1] = (unsigned char)w & 0xFF;
writeBytes(f, s, 2);
}