Tapahtuuko se jotenkin sprintf - käskyn avulla?
Desimaaliluvut heksadesimaaliluvuiksi
Matti.W
61488
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 6
Vanhimmat
sprintf("%h",22)?
en tiedä miten toimii floateilla mutta kokonaisluvuilla voi käyttää itoaa.
char str[80];
int numero;
printf("luku %s",itoa(numero,str,2)); // tulostaa binäärinä, kantaluku 2
printf("luku %s",itoa(numero,str,10)); // tulostaa normaalisti
printf("luku %s",itoa(numero,str,16)); // tulostaa heksana
Aloittaja olisi halunnut varmaan perl esimerkin. Sorry.
Seuraava esimerkki toimii UNIX -komentoriviltä. Tuo $n=6 tarkoittaa lukua joka muunnetaan desimaaliluvuksi. Pienin muutoksin rivi toimii myös ohjelmatiedoston osana.
#perl -e '$n=6;$b=chr(int($n/16) 48);$b=~tr/:;?/A-F/;$a=chr(($n) 48);$a=~tr/:;?/A-F/;print "$b$a \n";'
#Ylläoleva rivi muuttaa desimaaliluvun (välillä 0-255) heksadesimaaliluvuksi ja lisää tarvittaessa etunollan.
Toisinpäin juttu olisi varsin helppo:
print hex(FF);
tulostuu:
255
printf '%X', 62; # Tulostaa '3E'.
printf '%x', 62; # Tulostaa '3e'.
http://perldoc.perl.org/functions/sprintf.html
#!/usr/bin/perl -w
$a=3;
$a=sprintf '%+X',$a; #muutetaan $a hex-luvuksi
$a=~s/^.$/0$a/; #jos $a on yksimerkkinen, lisätään alkuun nolla.
print "$a\n";