Laden...

Rechtecke bei Konvertierung von Byte in String

Erstellt von laptor vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.163 Views
laptor Themenstarter:in
95 Beiträge seit 2008
vor 15 Jahren
Rechtecke bei Konvertierung von Byte in String

Hallo,

Ich lese mit folgedem Code Mp3 Tag Daten ein, dies funktioniert auch einwandfrei.

try
                    {
                        using (FileStream fs = File.OpenRead(listBox1.Items[i].ToString()))
                        {
                            if (fs.Length >= 128)
                            {

                                MusicID3Tag tag = new MusicID3Tag();
                                fs.Seek(-128, SeekOrigin.End);
                                fs.Read(tag.TAGID, 0, tag.TAGID.Length);
                                fs.Read(tag.Title, 0, tag.Title.Length);
                                fs.Read(tag.Artist, 0, tag.Artist.Length);
                                fs.Read(tag.Album, 0, tag.Album.Length);
                                fs.Read(tag.Year, 0, tag.Year.Length);
                                fs.Read(tag.Comment, 0, tag.Comment.Length);
                                fs.Read(tag.Genre, 0, tag.Genre.Length);
                                string theTAGID = Encoding.Default.GetString(tag.TAGID);

                                if (theTAGID.Equals("TAG"))
                                {

                                    SongName = Encoding.Default.GetString(tag.Title);
                                    Artist = Encoding.Default.GetString(tag.Artist);
                                    Album = Encoding.Default.GetString(tag.Album);
                                    Year = Encoding.Default.GetString(tag.Year);
                                    listBox2.Items.Add(SongName);

                                }

                            }

                        }

                    catch { listBox1.Items.Add("---"); }

                }

            }


        class MusicID3Tag
        {

            public byte[] TAGID = new byte[3];      //  3
            public byte[] Title = new byte[30];     //  30
            public byte[] Artist = new byte[30];    //  30 
            public byte[] Album = new byte[30];     //  30 
            public byte[] Year = new byte[4];       //  4 
            public byte[] Comment = new byte[30];   //  30 
            public byte[] Genre = new byte[1];      //  1

        }

Wie ihr oben sehen könnt habe ich ein Byte- Array für den Titel (30), wenn jetzt der Titel jedoch nur 12 Buchstaben hat, werden die restlichen (18) einfach nur als Vierecke dargestellt.

Gruss Thomas

Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo laptor,

wende String.Trim für Leerzeichen und Nul-Bytes auf den String an.

herbivore

laptor Themenstarter:in
95 Beiträge seit 2008
vor 15 Jahren

Ok, danke. Werds mal versuchen.

Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"

479 Beiträge seit 2008
vor 15 Jahren

Hallo laptor,

vielleicht sind in deinem String auch Zeichen vorhanden, die von der Schriftart nicht unterstützt werden.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
laptor Themenstarter:in
95 Beiträge seit 2008
vor 15 Jahren

Ich habs jetzt mit Trim gelöst und als Char hab ich ein null- Byte genommen. Hat perfekt geklappt.

Gruss Thomas

Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"