Byte[] in String

Steve-Oh

Grünschnabel
Hallo
ich versuche einen REG_BINARY aus der Reg. zu lesen und in String umzuwandeln.
Habe folgenden Code

Code:
public void reg_get()
        {

            ASCIIEncoding ascii = new ASCIIEncoding();

            foreach (Monitor x in MonList)
            {
                RegistryKey rkMonitor = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("ENUM").OpenSubKey(x.dev_id).OpenSubKey("Device Parameters");

                Byte[] bytes = (Byte[])rkMonitor.GetValue("EDID");

                String edid = ascii.GetString(bytes);

                Console.WriteLine(edid);
            }

        }

wenn ich bytes ausgeben lassen (und in HEX umwandle) dann stimmt der Inhalt mit dem Eintrag in der Registry überein. Wird also korrekt gelesen. Bei der Umwandlung in String läuft aber anscheinend was falsch.
Das letzte Console.WrtieLine gibt mir jedenfalls nichts aus.

Wo liegt mein Fehler, oder bin ich schon beim Ansatz falsch?

Danke für jeden Tipp.
 
Zuletzt bearbeitet:
Ich denke es liegt am Encoding. Bist du sicher, dass die Bytes einen ASCII-kodierten String darstellen? Was speichert dieser Registry-Key eigentlich für eine Information?

Ich habe das gerade mal bei mir getestet und stelle das selbe Verhalten fest: Byte-Array wird korrekt ausgelesen, String bleibt leer. (Bei mir liegt übrigens noch eine weitere Ebene zwischen "Enum" und "Device Parameters", bis dann mal ein "Edid"-Eintrag auftaucht.)
 
EDID ist sicher kein ASCII. ;)

Das ist kodierte Information. Um an die eigentlich interessanten Daten ranzukommen, wird noch ein Mapping benötigt.
Und da siehts schlecht aus, bei den Wikipedia-Links steht überall "no longer available" ... oops.
In der HDMI-1.3a Spec wird dann noch auf die CEA-861-D verwiesen, in der vermutlich das Mapping definiert ist; kostet allerdings 140$.

Was mich dann eher stutzig macht, wie Microsoft da noch Aktien hält. Im Wikipedia-Entry jedenfalls steht, dass die Manufacturer-ID von Microsoft vergeben wird:
00-19: HEADER INFORMATION
00–07: Header information "00h FFh FFh FFh FFh FFh FFh 00h"
08–09: Manufacturer ID. These IDs are assigned by Microsoft.

wtf?! :eek:
 
Zuletzt bearbeitet:
(Bei mir liegt übrigens noch eine weitere Ebene zwischen "Enum" und "Device Parameters", bis dann mal ein "Edid"-Eintrag auftaucht.)

ja diese Ebene wird bei mir über x.dev_id geöffnet.

@kabel2
Danke für die Hinweise. Hab jetzt übers Wochenende auch gedacht das es womöglich gar keine normale ASCII Codierung sein könnte. Mal sehen ob sich da irgendwo was finden läßt.

Jedenfalls schon mal vielen Dank. Echt super hier, vernünftige Antworten mit Hintergrundinformation und Belegen.
 
Zurück