Versionen dieses Beitrags

C Pointerei

pl
  • C Pointerei
  • hi Rolf,
  • wenn ich in C die Zahl 53 als 16 Bit BE haben will, notiere ich 0x0035 und gut is. Und so muss ich in C mit einem DNS Header verfahren:
  • 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:
  • ~~~c
  • 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](http://rolfrost.de/perldoc.html?f=pack)
  • MfG

C Pointerei

pl
  • C Pointerei
  • hi Rolf,
  • wenn ich in C die Zahl 53 als 16 Bit LE haben will, notiere ich 0x0035 und gut is. Und so muss ich in C mit einem DNS Header verfahren:
  • wenn ich in C die Zahl 53 als 16 Bit BE haben will, notiere ich 0x0035 und gut is. Und so muss ich in C mit einem DNS Header verfahren:
  • ~~~c
  • 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](http://rolfrost.de/perldoc.html?f=pack)
  • MfG