php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-07-2015, 21:20
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard Byte Array

Hi

Ich suche eine Funktion in PHP um einen Byte Array zu erstellen und diesen per Base64 noch zu encoden.

In #C gibt es diese Funktion:
Convert.ToBase64String(new byte[] {5, 7})

Gibt es sowas auch in PHP oder kennt jemand ne möglichkeit dafür?

Gruss und Danke

Koda
Mit Zitat antworten
  #2 (permalink)  
Alt 02-07-2015, 21:22
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ist es so schwer im PHP-Manual nach "base64" zu suchen?

PHP: base64_encode - Manual
Mit Zitat antworten
  #3 (permalink)  
Alt 02-07-2015, 21:38
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Guten Abend

Das base64 ist nicht das Problem eher alles zusammen. Vorallem den byte Array zu erhalten ind diesen mit base64 zu encoden.

Gruss

Koda
Mit Zitat antworten
  #4 (permalink)  
Alt 02-07-2015, 21:57
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Koda Beitrag anzeigen
Das base64 ist nicht das Problem eher alles zusammen. Vorallem den byte Array zu erhalten ind diesen mit base64 zu encoden.
PHP-Code:
echo base64_encode("\x05\x07");
// BQc= 
Code:
Console.WriteLine(Convert.ToBase64String(new byte[] { 5, 7 }));
// BQc=

Geändert von h3ll (02-07-2015 um 22:00 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 03-07-2015, 02:58
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Guten Abend

Vielen Dank. Ist ein bytearray immer X und die Zahl mit führender 0 oder kann ich die mit php selber generieren?

Gruss

Koda
Mit Zitat antworten
  #6 (permalink)  
Alt 03-07-2015, 10:02
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

PHP: chr - Manual
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 03-07-2015, 18:42
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Koda Beitrag anzeigen
Ist ein bytearray immer X und die Zahl mit führender 0 oder kann ich die mit php selber generieren?
Nein.

PHP-Code:
$byteArray "Das hier ist ein Byte-Array".

echo 
"5. Byte: " ord($byteArray[4]); 
Mit Zitat antworten
  #8 (permalink)  
Alt 05-07-2015, 13:43
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Koda Beitrag anzeigen
Ich suche eine Funktion in PHP um einen Byte Array zu erstellen und diesen per Base64 noch zu encoden.
Das sind zwei Aufgabenstellungen, die du getrennt betrachten solltest.

Zitat:
In #C gibt es diese Funktion:
Convert.ToBase64String(new byte[] {5, 7})

Gibt es sowas auch in PHP oder kennt jemand ne möglichkeit dafür?
Mit ein wenig Boilerplate könnte man zu so etwas kommen:
PHP-Code:
Convert::toBase64String(new Bytes([57])) 
Dazu der Unterbau:
PHP-Code:
interface IConvertible {
    function 
__toString();
}

abstract class 
Convert {
    static function 
toBase64String(IConvertible $bytes) {
        return 
base64_encode($bytes);
    }
}

abstract class 
ArrayOfInt implements IConvertible {
// todo: implement ArrayAccess, Iterator, Countable

    // limits
    
const minValue PHP_INT_MIN;
    const 
maxValue PHP_INT_MAX;

    
// properties
    
protected $ary null/// Array() of Int(minValue...maxValue)

    
protected function containsValidValuesOnly(Array $ary) {
        foreach (
$ary as $value) {
            if (
$value $this::minValue || $value $this::maxValue) {
                return 
false;
            }
        }
        return 
true;
    }

    function 
__construct(Array $ary$check true) {
        if (
$check && !$this->containsValidValuesOnly($ary)) {
            throw new 
Exception('Invalid Value Error');
        }
        
$this->ary $ary;
    }

    const 
packformat 'C*'// UBYTE

    // implement IConvertible

    
function __toString() {
        
$values $this->ary;
        
array_unshift($values$this::packformat);
        return 
call_user_func_array('pack'$values);
    }
}

class 
Bytes extends ArrayOfInt {
    
// limits
    
const minValue 0;
    const 
maxValue 255;
    const 
packformat 'C*'// UBYTE

Eventuell etwas viel Umstand für wenig Ergebnis ...

Zurück zu den zwei Problemstellungen:

1.) Du möchtest mit Byte-Arrays arbeiten. PHP hat so eine Datenstruktur nicht (serienmäßig eingebaut). Wir haben Arrays, eine Art eierlegende Wollmilchsau. Eine Datenstruktur die von allem etwas (aber nichts richtig) kann. Arrays in PHP dienen als:
* Assoziative Arrays (Mapping, Dictionary, ...)
* Listen (Felder, C-like Arrays, ...)

Der Datentyp, den ein PHP-Array simuliert, wird quasi durch die Funktionen und Operatoren bestimmt, die du auf das Array anwendest.

1a.) Wie h3ll schon angemerkt hat, kann man Byte-Arrays in PHP auch mit Strings simulieren. Derzeit sind PHP-Strings einfach Speicherbereiche, auf deren Byte-Positionen man mit der []-Operation zugreifen kann. Quelle und Ziel dieser Operationen sind aber immer PHP-Strings (mit der Länge 1 Byte). Wenn du gewohnt bist, mit Ganzzahl-Typen (UBYTE, UCHAR e.t.c.) zu arbeiten, musst du zusätzlich chr() und ord() für Einzel-Bytes benutzen. Für das Konvertieren ganzer Arrays gibts entsprechend pack() und unpack(). Beide Funktionen sind allerdings mit einigen Stolperfallen versehen.

2.) Fürs Base64-Encoding hat PHP base64_encode() in seiner Standard-Library. Allerdings stellt sich die Frage, worauf in deiner Anwendung der Fokus liegt:
* auf dem Arbeiten mit Byte-Arrays, wie du es von C# gewohnt bist,
* oder auf dem Konvertieren von Byte-Arrays?
Im letzteren Fall fährst du mit PHP-Strings besser.

Prinzipiell kann man von PHP aus über die COM-Erweiterung auch Objekte aus .NET-Assemblies erzeugen und benutzen. Allerdings funktioniert das nicht mit Klassen die ausschließlich "statische" Methoden besitzen (wie "Console" und "Convert"), nur mit Methoden, die als "COM visible" deklariert wurden und nur mit "echten" Objekten (nicht mit "structs"). Ob es mit dem Equivalent zu "byte[]" klappt, weiß ich nicht.

Geändert von fireweasel (05-07-2015 um 13:54 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 05-07-2015, 21:12
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Guten Abend

Vielen Dank an alle. Ich werde mir das alles mal anschauen. Denke da finde ich meine Lösung

Gruss

Koda
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
cURL Upload 0 Byte weltvolk PHP Developer Forum 10 21-02-2008 21:23
[Funktion] String in Byte konvertieren? 0001001 PHP Developer Forum 3 10-04-2007 18:53
UploadScript! Byte in Kbyte oder MB?? chamleon PHP Developer Forum 21 15-02-2006 08:59
index.php plötzlich 0 byte ??? HolS IT-Security 2 22-07-2004 20:23
Byte in Kilobyte umrechnen?? Martina-GaLLo PHP Developer Forum 15 11-07-2003 08:40

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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