Avatar billede kasperbws Nybegynder
23. juli 2002 - 22:44 Der er 7 kommentarer og
3 løsninger

Konvertere bogstaver til ASCII

Hejsa Eksperter...

Jeg er i gang med bogen [Start på PHP], og jeg har tidligere stillet et spørgsmål www.eksperten.dk/spm/238684 men nu har jeg altså et spørgsmål mere, så jeg måtte nok hellere oprette et for sig selv :)

Jeg skal lave en side hvor der står "jeg er dum" med binære tal. Men jeg skal først konvertere hvert bogstav til en ascii-værdi, for derefter at konvertere til binært tal...

hvordan gør jeg nemmest det? Det er mest spørgsmålet om at konverterer hvert enkelt bogstav til en ascii, jeg synes er svært. Hvordan gør man det nemmest?
Avatar billede teaspoon Nybegynder
23. juli 2002 - 22:47 #1
$ascii_value = ord("a");
Avatar billede teaspoon Nybegynder
23. juli 2002 - 22:47 #2
så får du ascii værdien af a hvis du ikke havde gættet det :)
Avatar billede kasperbws Nybegynder
23. juli 2002 - 22:49 #3
ja, men jeg skal jo have hele sætningen "jeg er dum"... skal jeg så gøre det ved hvert eneste bogstav...? findes der ikke en smartere måde?
Avatar billede gizmo-gizmo Nybegynder
23. juli 2002 - 22:53 #4
På den bøvlede måde:

<?
$streng = "Hej er bare for dum";
for($i=0; $i < strlen($streng); $i++) {
    echo ord( substr($streng, $i, 1) );
}
?>
Avatar billede teaspoon Nybegynder
23. juli 2002 - 23:02 #5
hvis du vil have det over i en ny steng kan du i stedet for echo bruge $nystreng .= ord( substr($streng, $i, 1) );

måske ønsker du heller ikke at kovertere mellemrum til ascii værdien, så check eventuelt om $streng blot er et mellemrum.

for($i=0; $i < strlen($streng); $i++) {
  if($streng == " ") {
    $nystreng .= ord( substr($streng, $i, 1) );
  } else {
    $nystreng .= " ";
  }
}
Avatar billede coderdk Praktikant
23. juli 2002 - 23:58 #6
$str = 'Jeg er dum';
for ($i=0;$i<strlen($str);$i++)
{
    $bin = str_pad(sprintf('%b',ord($str[$i])),8,'0',STR_PAD_LEFT);
}
echo $bin;

funtionen, ord laver et bogstav om til ASCII værdien, sprintf's %b skriver et heltal ud som binær, og str_pad sørger for at alle bitgrupper er lige lange - i dette tilfælde 8 - den tilføjer 0'er foran hvis der er brug for det ;)
Avatar billede tipsen Nybegynder
24. juli 2002 - 01:04 #7
Alternativ:

$str = 'Jeg er dum';
for ($i=0;$i<strlen($str);$i++)
{
  echo str_pad(decbin(ord($str[$i])),8,"0",STR_PAD_LEFT);
}

eller:

$str = 'Jeg er dum';
for ($i=0;$i<strlen($str);$i++)
{
    echo sprintf('%08b',ord($str[$i]));
}
Avatar billede kasperbws Nybegynder
24. juli 2002 - 14:51 #8
Tak for jeres fine svar...

Men Start på PHP-bogen er en helt nybegynder bog, der er delt op i kapitler, og efter hvert kapitel er der nogle opgaver man skal løse.

Min opgave lyder helt præcist: "Funktionen ord() returnerer ascii-værdien af et bogstav (bogstavets talværdi) hvis den kaldes som f.eks. ord("a"). Lav en side der skriver "du er dum" med binære tal. Det vil sige, at den skal finde ASCII-værdien for hvert bogstav og konvertere den til det binære talsystem."

Jeg har ikke lært noget om funktionerne strlen() og substr() endnu, så jeg regner ikke med at det er den måde jeg skal lave det på... Er der evt. en måde man kan lave det på uden brug af strlen() og substr()?
Avatar billede gizmo-gizmo Nybegynder
24. juli 2002 - 14:57 #9
kasperbws >> hmm,, hvis det skal laves uden det skal man bruge:

echo ord("j") . ord("e") . ord("g");

osv..

Men det er da en åndsvag måde at gøre det på.

strlen er nu ganske simpel. Den tæller antal tegn.
fx: echo strlen("hej"); - den vil så skrive: 3

substr tager en bestemt del ud af en variabel.
Avatar billede kasperbws Nybegynder
24. juli 2002 - 15:06 #10
gizmo-gizmo > Jeg slog strlen() op, og jeg kan da godt se det er en lidt besværlig måde at gøre det på, men det er jo en nybegynderbog... men jeg tror faktisk det er sådan jeg skal gøre det... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester