php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2011, 17:06  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard [Erledigt] String zeichenweise hexadezimal darstellen

Hi,
gibt es bereits eine fertige Funktion, die einen String in seine hexadezimale schreibweise wie strToHex2 im folgenden Beispiel konvertiert?
Beispiel:
PHP-Code:
function strToHex2($str) {
    return 
'\x'.rtrim(chunk_split(strtoupper(bin2hex($str)),2,'\x'),'\x');
}
echo 
strToHex2("abc\r"); // \x61\x62\x63\x0D 
jspit ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.12.2011, 17:32  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Eine fertige Funktion ist mir so nicht bekannt.
Irrelevant, aber ich poste mal eine ähnliche Lösung:
PHP-Code:
function str2hex$string ) {
  return 
'\x' implode'\x'array_map('bin2hex'str_split($string)) );
}

var_dumpstr2hex('Hans Wurst geht Salami kaufen.') ); 
...is'n bischen weniger "gewühle", macht aber auch nur das gleiche, wie Deine Funktion...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 18.12.2011, 18:10  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Wenn du auf das \x vor dem String verzichten kannst, wäre unpack noch eine Möglichkeit
PHP-Code:
unpack("H*""abc\r"
__________________
Frank ist offline   Mit Zitat antworten
Alt 18.12.2011, 18:37  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Lt. Eingangspost möchte er aber \x vor jedem einzelnen HexWert haben.
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 18.12.2011, 21:57  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von jspit Beitrag anzeigen
Hi,
gibt es bereits eine fertige Funktion, die einen String in seine hexadezimale schreibweise wie strToHex2 im folgenden Beispiel konvertiert?
...
Kommt darauf an, was man unter "fertig" versteht ... Für mich gibt es eine solche Funktion, die heißt preg_replace_callback(), die kann praktisch alles finden und ersetzen, was nicht bei drei auf den Bäumen ist. Aber du wirst die wahrscheinlich eher als "unfertig" ansehen:

PHP-Code:
preg_replace_callback(
    
'/./sS'
    function(
$h) {return sprintf('\x%02x'ord($h[0]));}, 
    
$input
); 
Zerlegt man den String mit unpack('C*', ...), dann kann man die "fertigen" Array-Funktionen array_map() oder array_reduce() benutzen:
PHP-Code:
implode(array_map(
    function(
$i) { return sprintf('\x%02x'$i);}, 
    
unpack('C*'$input)
));

array_reduce(
    
unpack('C*'$test), 
    function(
$accu$i) {return $accu .= sprintf('\x%02x'$i);}, 
    
''
); 
So. Habe fertig.

Moment, einen haben wir noch:

PHP-Code:
function str2hex_ob($input) {
    
ob_start();
    for (
$o 0$strlen strlen($input); $o $strlen; ++$o) {
        
printf('\x%02x'ord($input[$o]));
    }
    return 
ob_get_clean();


Geändert von fireweasel (19.12.2011 um 20:31 Uhr). Grund: source-code zu breit; str2hex_ob()
fireweasel ist offline   Mit Zitat antworten
Alt 19.12.2011, 00:33  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wozu eigentlich das ganze ..?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 19.12.2011, 08:20  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Hi,
danke für die zahlreichen Tipps.

Zitat:
Zitat von Chriz Beitrag anzeigen
Wozu eigentlich das ganze ..?
Die Frage habe ich schon erwartet. Ich benötige die function zum Debugging. Sie soll 2 Aufgaben erfüllen:
1. Es sollen alle Zeichen im String (nicht nur \r, sondern auch \x06 ..)vernünftig lesbar sichtbar gemacht werden,
Stichwort Socket-Funktionen.
2. Per Copy&Paste möchte ich gleichzeitig einen String zur Verfügung haben, mit dem sich der Inhalt der Variablen schnell wieder herstellen lässt.

Die function var_export ist lt. Docu dafür vorgesehen, macht mir aber nicht alle Zeichen vernünftig sichtbar und
liefert mir bei der Ausgabe teilweise Space anstelle der Steuerzeichen.

LG jspit
jspit ist offline   Mit Zitat antworten
Alt 19.12.2011, 10:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Benutz doch einfach einen Hexeditor?!

Im Übrigen
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 19.12.2011, 11:51  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Hexeditor? Verstehe nur nicht ganz, wie ich damit effektiv an meine Informationen komme, wenn z.B. per fgetc() irgendwelche Binärdaten in einem String landen. In einer Datei speichern und per Hexeditor betrachten?
Die obige Darstellung soll zu Testzwecken zudem einen problemlosen Transfer dieser Strings in andere scripte ermöglichen. Ob dieses Konzept aufgeht wird sich noch zeigen.

'Im Übrigen', was genau ist gemeint? Habe mich bemüht, die meine Frage exakt zu stellen incl. einer aussagekräftigen Überschrift.
Die Antworten befriedigen mich voll, denn A bin ich nicht zu blöd zu suchen und B habe ich noch Anregungen erhalten wie ich es besser machen kann. Den Hintergrund mitzuliefern schien mir für die Beantwortung der Frage nicht so wichtig.
jspit ist offline   Mit Zitat antworten
Alt 19.12.2011, 12:55  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ruhig Ich meine damit nur, dass man präziser helfen kann, wenn man weiß worum es geht. Und wenn du den Verkehr mitloggst und die Logdatei dann im Hexeditor aufmachst kann das doch durchaus hilfreich sein, oder nicht?

Ist ja keine Frage, dass jeder anders debuggt, nur werkelt man ja doch gelegentlich an Anwendungsproblemen rum, bis man merkt die ganze Anwendung ist eigentlich überflüßig. Wenn dir das Skript hilft, ists ja top. Mir ging nur das Verständnis deines Problems verloren, als jemand sagte, der Threadstarter will aber das X vor dem Slash.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
socket: String -> Hex fehler ibeg PHP Einsteiger 10 16.11.2011 22:35
DI-Container xm22 Software-Design 44 07.08.2011 18:03
Knoten im Kopf, aus mehrdim. Array INSERT .. VALUES (..), (..) machen Chriz PHP Einsteiger 11 21.01.2011 15:55
[Erledigt] String von Sonderzeichen und Zahlen befreien pfump PHP Tipps 2010 10 19.11.2010 16:08
Sphider Umlaute und MySQL Fehler xnic Datenbanken 2 03.08.2010 20:10
[Erledigt] Exchange 2007 KalenderItems tarian PHP-Fortgeschrittene 1 26.05.2010 10:23
Alle Zeilen wo Spalte in String vorkommt / LIKE? scub Datenbanken 2 11.03.2010 00:08
Scriptangebot Codieren von Texten Ryuuzaki93 Scriptbörse 9 08.02.2010 23:14
Records mit PHP ? SimStar001 PHP Tipps 2009 11 08.04.2009 15:14
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
string in string suchen,ersetzen,zusammenfügen und update machen litterauspirna PHP Tipps 2009 24 08.01.2009 13:38
PHP5 SOAP - Problem mit Arrays Calexico PHP-Fortgeschrittene 0 11.09.2008 12:06
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php hexadezimal zeichen, js string sonderzeichen darstellen, hexdezimal darstellen, fertiges javascript zum hexadezimalzahlen verarbeiten, aufgabe string in hex, string hexadezimal darstellen, php zeichen hex, hex in php darstellen x0, php hexadezimal darstell, hexadezimal für anfänger

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum