Cum se afișează numerele hexazecimale în C? (Programare, C, Format, Număr Întreg, Printf, Hexagonal)

utilizator188276 a intrebat.

Am o listă de numere ca mai jos:

0, 16, 32, 48 …

Am nevoie să afișez aceste numere în hexadecimal ca:

0000,0010,0020,0030,0040 …

Am încercat soluții precum:

printf("%.4x",a); // where a is an integer

dar rezultatul pe care l-am obținut este:

0000, 0001, 0002, 0003, 0004 …

Cred că sunt pe aproape. Poate cineva să mă ajute, deoarece nu sunt atât de bun la printf în C.

Mulțumesc.

Comentarii

  • Încercați printf("%d: %.4x
    ", a, a)
    , cred că a nu are valoarea pe care crezi că o are. – utilizator180100
  • da, ai dreptate. am fost distrat. îmi pare rău pentru această întrebare prostească… – user188276
4 răspunsuri
codaddict

Încearcă:

printf("%04x",a);
  • 0 – Padelează la stânga numărul cu zerouri (0) în loc de spații, acolo unde este specificatpadding.
  • 4 (lățime) – Numărul minim de caractere care urmează să fie tipărite. Dacă valoarea care urmează să fie tipărită este mai mică decât acest număr, rezultatul este justificat la dreapta în cadrul acestei lățimi prin căptușirea la stânga cu caracterul pad. În mod implicit, acesta este un spațiu gol, dar zero din față pe care l-am folosit specifică un zero ca și caracter de tamponare.Valoarea nu este trunchiată chiar dacă rezultatul este mai mare.
  • x – Specificator pentru numărul întreg hexazecimal.

Mai multe informații aici

Comentarii

  • rezultă în: 0000, 0001, 0002, 0003, 0004 … ceea ce am nevoie este: 0000,0010,0020,0030,0040 … – utilizator188276
  • hmm, ce ciudat … Am încercat, dar întotdeauna apare 0000, 0001, 0002, 0003, 0004 (folosesc Eclipse în Ubuntu, gcc…) – user188276
  • @tsubasa – tipărește-le ca numere întregi zecimale în același timp, doar pentru a verifica dacă restul codului tău face ceea ce crezi. –  > Por detly.
  • Originalul %.4x notația de format era bună și obținea aceleași rezultate ca și %04x. Problema a fost în primul rând datele furnizate către printf(). –  > Por Jonathan Leffler.
zeilja

Eu îl folosesc așa:

printf("my number is 0x%02X
",number);
// output: my number is 0x4A

Doar schimbați numărul „2” cu orice număr de caractere pe care doriți să le imprimați 😉

loxxy

Codul tău nu are nicio problemă. Se tipărește așa cum vrei tu. Alternativ, puteți face acest lucru:

printf("%04x",a);

hmofrad

Puteți folosi următorul fragment de cod:

#include<stdio.h>
int main(int argc, char *argv[]){
    unsigned int i;
    printf("decimal  hexadecimal
");
    for (i = 0; i <= 256; i+=16)
        printf("%04d     0x%04X
", i, i);
    return 0;
}

Acesta tipărește atât numere zecimale, cât și hexazecimale în 4 locuri cu umplutură zero.