Zahl=>Hexzahl=>Dualzahl und zurück
Daniel
- php
Hi,
ich habe schon in SELFHTML bzw SELFPHP gesucht und nix dazu gefunden.
Ich habe nur sachen gefunden um Integer in String etc zu "verwandeln"
aber nichts um die zahlen z.B. in Dualzahlen umzuwandeln, bzw in den
ASCII Code. also
0= 0000 0000
1= 0000 0001
2= 0000 0010
...
oder in Hexadezimal anstatt dual. ich möchte das ganze zum ver und
entschlüsseln nehmen, also der User gibt eine oder einen String ein und
dieser wird dann Zeichenweise in Dual umgewandelt und es wird jeweils
+100 gemacht (oder so) und das ganze wird dann in die DB gespeichert.
wird die DB ausgelesen soll das wieder "zeichenweise" ablaufen, die -100
und man sieht die original eingabe. ist das überhaupt möglich? wenn ja
wie?
MfG
Hi,
wenn ja
dechex() wandelt z.B. dezimal in hexadezimal. Weitre Varianten findest Du im PHP-Manual an selbiger Stelle. ;-)
Gruß, Cybaer
Hi,
dechex() wandelt z.B. dezimal in hexadezimal. Weitre Varianten findest Du im PHP-Manual an selbiger Stelle. ;-)
thx, mit Zahlen funktionierts, aber leider nicht mit Buchstaben und
vorallendingen funktioniert das mit der addition nicht sauber da strings
zurückgegeben werden und diese bei der addition wie Integers benutzt
werden. Wie könnte man das lösen? Ich hab irgendwo mal was gelesen wie
man Buchstaben in dual-code umwandeln konnte. finds aber nichtmehr.
MfG
hi,
mit Zahlen funktionierts, aber leider nicht mit Buchstaben und
vorallendingen funktioniert das mit der addition nicht sauber da strings
zurückgegeben werden und diese bei der addition wie Integers benutzt
werden.
dann addiere doch schon vor dem umwandeln deine _dezimalen_ werte, und wandle dann das ergebnis erst in hex um.
gruß,
wahsaga
Hi,
hab das problem jetzt so "gelöst":
<html>
<head>
<title>Codierung</title>
</head>
<body>
<form action="codierung.php" method="post">
<input type="text" name="text">
<input type="submit" name="submit" value="codierung">
</form>
<?
if(@$_POST['submit']<>null)
{
$Text = $_POST['text'];
$lang = strlen($Text);
echo "Text: $Text<br>";
for ($z=0; $z<$lang; $z++)
{
$Textteil = substr($Text, $z);
$Textteil = ord($Textteil);
echo "Textgewandelt: $Textteil<br>";
$Code = "5";
$Code = ord($Code);
$TextteilCode[$z] = $Textteil+$Code;
}
$anzahl = count($TextteilCode);
$TextDecode = "";
for ($z=0; $z<$anzahl; $z++)
{
$Textteil = $TextteilCode[$z];
$Code = "5";
$Code = ord($Code);
$Decoded = $Textteil - $Code;
$Decoded = chr($Decoded);
$TextDecode = $TextDecode.$Decoded;
}
echo "Decodiert: $TextDecode";
}// if(@$_POST['submit']<>null)
?>
</body>
</html>
Wer hat Verbesserungsvorschläge?
echo $begrueszung;
Wer hat Verbesserungsvorschläge?
yep.
if(@$_POST['submit']<>null)
Wenn das Formular im IE mit Enter abgesendet wird, dann wird der Submit-Button als nicht gedrückt gewertet und ist damit nicht in den abgesendeten Formulardaten enthalten. Also teste lieber auf das Eingabe-Element. [1]
Außerdem ist ein Test mittels isset() besser als deine Konstruktion
if (isset($_POST['text']))
Die Variable $TextteilCode wird nicht explizit initialisiert. Ihr werden zwar in der ersten for-Schleife Werte übergeben, und damit wird sie auch angelegt, jedoch wird die Schleife nicht durchlaufen, wenn im Formular nichts eingegeben wurde. (strlen($Text) bzw. $lang ist dann 0)
Und bei
$anzahl = count($TextteilCode);
gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)
$TextDecode = $TextDecode.$Decoded;
dies lässt sich auch so schreiben:
$TextDecode .= $Decoded;
echo "$verabschiedung $name";
[1] Alternativ geht auch ein Hidden-Element, das den gleichen Namen wie der Submit-Button bekommt und vor diesem anzuordnen ist. Wird das Formular mit Enter abgesendet, bekommst du nur das Hidden-Element. Beim Absenden mit Button-Klick wird der Button-Wert dann den Hidden-Wert überlagern.
Hi,
danke für die Verbesserungsvorschläge, hab das meiste jetzt umgesetzt
nur eines möcht ich noch wissen.
Und bei
$anzahl = count($TextteilCode);
gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)
Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.
$TextDecode = $TextDecode.$Decoded;
dies lässt sich auch so schreiben:
$TextDecode .= $Decoded;
gut zu wissen, ist wie $Variable++ ne nette abkürzung.
MfG
Hi,
Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.
error_reporting(E_ALL);
Gruß, Cybaer
Hi,
ich habe den Quelltext jetzt überarbeitet hier der momrntane Quelltext:
<html>
<head>
<title>Codierung</title>
</head>
<body>
<form action="codierung.php" method="post">
<input type="text" name="text">
<input type="submit" name="submit" value="codierung">
</form>
<?
error_reporting(E_ALL);
if(isset($_POST['text']))
{
$Text = $_POST['text'];
$lang = strlen($Text);
$TextteilCode = false;
echo "Text: $Text<br>";
for ($z=0; $z<$lang; $z++)
{
$Textteil = substr($Text, $z);
$Textteil = ord($Textteil);
$Code = "5";
$Code = ord($Code);
$TextteilCode[$z] = $Textteil+$Code;
}
if ($TextteilCode <> false)
{
$anzahl = count($TextteilCode);
$TextCodiert ="";
for ($z=0; $z<$anzahl; $z++)
{
$TextCodiert .= $TextteilCode[$z];
}
echo "Textgewandelt: $TextCodiert<br>";
$TextDecode = "";
for ($z=0; $z<$anzahl; $z++)
{
$Textteil = $TextteilCode[$z];
$Code = "5";
$Code = ord($Code);
$Decoded = $Textteil - $Code;
$Decoded = chr($Decoded);
$TextDecode .= $Decoded;
}// for ($z=0; $z<$anzahl; $z++)
echo "Decodiert: $TextDecode";
}// if ($TextteilCode <> false)
}// if(@$_POST['submit']<>null)
?>
</body>
</html>
Weitere Verbesserungsvorschläge erwünscht.
MfG
echo $begrueszung;
gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)
Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.
Es gibt mehrere Möglichkeiten.
Eine hat Cybaer schon genannt.
Zum anderen ist es eine gute Idee, diese Option auf dem lokalen Entwicklungssystem gleich in der php.ini einzustellen. Da steht meist eine Zeile:
error_reporting = E_ALL & ~E_NOTICE
Dort muss dann das & ~E_NOTICE weg.
Und zum dritten kann man, wenn PHP als Modul läuft und die Apache-Konfiguration es zulässt, PHP-Optionen per Verzeichnis in der meist .htaccess genannten Datei einstellen. Hier muss allerdings der Zahlenwert für E_ALL verwendet werden:
php_value error_reporting 2047
Ob die Einstellungen wirken verrät dir dann phpinfo(); (Da muss auch der Zahlenwert auftauchen.)
(Unter Windows gibt es noch die Möglichkeit, die Registry zu verwenden, aber das lass ich hier mal weg.)
echo "$verabschiedung $name";
Hi,
ich habe grad mal phpinfo (wie schon so oft) ausgeführt da steht unter
Configuration
PHP Core
bei error_reporting sowohl für Local Value als auch Master Value 2047
heißt das ich kann mir den part in der php-Datei sparen?
MfG
echo $begrueszung;
ich habe grad mal phpinfo (wie schon so oft) ausgeführt da steht unter
Configuration
PHP Corebei error_reporting sowohl für Local Value als auch Master Value 2047
heißt das ich kann mir den part in der php-Datei sparen?
Ja, das kannst du auch durch
echo $a;
prüfen. Vorausgesetzt, $a existiert nicht, musst du dann eine "Notice: Undefined variable: a in ..." zu sehen bekommen.
echo "$verabschiedung $name";
Hi,
Ja, das kannst du auch durch
echo $a;
prüfen. Vorausgesetzt, $a existiert nicht, musst du dann eine "Notice: Undefined variable: a in ..." zu sehen bekommen.
ja, solche, oder so ähnliche, Fehlermeldungen bekomm ich ab und zu, dann
ein @ hin und ruhe ist. Natürlich nur wenns trotzdem Funktioniert.
MfG
hi,
ja, solche, oder so ähnliche, Fehlermeldungen bekomm ich ab und zu, dann
ein @ hin und ruhe ist. Natürlich nur wenns trotzdem Funktioniert.
nein, wenn du sauber programmieren willst, auch dann nicht.
gruß,
wahsaga
Hi,
nein, wenn du sauber programmieren willst, auch dann nicht.
Was hatt denn das damit zu tun ob ich sauber bin oder nicht. Da kommts
wohl eher drauf an wie oft ich dusche?
Jane is klar. ich weis das es ne dumme Angewohnheit von mir ist. wills
mir ja auch abgewöhnen, genauso wie das rauchen. wobei ich mir das mit
dieser @Angewohnheit eher schaffe mir abzugewöhnen, es ist nur einfach
eine schnelle Lösung, sicherlich nicht valide.
MfG
Hi,
thx, mit Zahlen funktionierts, aber leider nicht mit Buchstaben und
? Wandle halt die Buchstaben in Zahlencodes um.
Wie könnte man das lösen?
Indem man eine Hex-Kennung vor den "String" packt:
echo '0x'.dechex(127)+1;
gibt 128 aus (127+1).
Gruß, Cybaer