Desimaaliluvut heksadesimaaliluvuiksi

Tapahtuuko se jotenkin sprintf - käskyn avulla?
Ilmianna
Jaa

6 Vastausta



sprintf("%h",22)?
Ilmianna
Jaa
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
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Aloittaja olisi halunnut varmaan perl esimerkin. Sorry.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
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
Kommentoi
Ilmianna
Jaa
2 VASTAUSTA:
printf '%X', 62; # Tulostaa '3E'.
printf '%x', 62; # Tulostaa '3e'.

http://perldoc.perl.org/functions/sprintf.html
Kommentoi
Ilmianna
Jaa
Whitelighter kirjoitti:
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";
Kommentoi
Ilmianna
Jaa
+Lisää kommentti

Vastaa alkuperäiseen viestiin

Desimaaliluvut heksadesimaaliluvuiksi

Tapahtuuko se jotenkin sprintf - käskyn avulla?

5000 merkkiä jäljellä

Peruuta