hi Rolf,
wenn ich in C die Zahl 53 als 16 Bit BE haben will, notiere ich 0x00 und 0x35 in 2 Oktetten und gut is. Und so muss ich in C mit einem DNS Header verfahren:
Sho h[6] = {
htons(0xACDC), // Identyfier
htons(0x0100), // Standard Query
htons(0x0001), // One Question
0, 0, 0 // Answer RRs, Authority RRs, Additional RRs
};
Weil ich weiß daß C intern ein 0xACDC als LE auffasst, also muss ich das rumdrehen. Mit Perl, was auf derselben Maschine läuft, ist eine solche Konvertierung nicht notwendig, wenn ich da $h[0] = 0xACDC;
notiere kommt das mit derselben Byteorder am Server an.
Mit
printf("%#02x ", $_) for unpack("W*", pack L=>0x12345678);
kannst Du übrigens testen, welche Architektur vorliegt, zum Ergebnis siehe perldoc -f pack
MfG