2016-06-02 20 views
0

に曲の詳細を変換する際にこだわっている:
(曲が構造体である)私は以下のコードを書いた文字列

private void get_attribute(string file) 
    { 
     byte[] b = new byte[128]; 
     FileStream fs = new FileStream(file, FileMode.Open); 
     fs.Seek(-128, SeekOrigin.End); 
     fs.Read(b, 0, 128); 
     Song song = new Song(); 
     song.Singer= Encoding.Default.GetString(b, 33, 30); 
     song.Album= Encoding.Default.GetString(b, 63, 30); 
     song.Title= Encoding.Default.GetString(b, 3, 30); 
     string a = song.Singer + song.Album + song.Title; 
     textBox1.AppendText(a); 
    } 

をしかし、これが唯一のテキストボックスにシンガーを示しています。
私は、テキストボックスの下のテキストのようなものとします
シンガー:...アルバム:...タイトル:...
enter image description here 上の写真は、変数の時計のスクリーンショットです。
"trunc"メソッドを使用して文字列から '\ 0'を削除することもできません。

+0

このようにsong.Singer.Trim( '\ 0')で0x00を削除できます。必要なテキストは、文字列a = string.Format( "歌手:{0}、アルバム:{1}、タイトル:{2}"、song.Singer、song.Album、song.Title)で取得できます。データをファイルに書き込んでいますか? –

+0

@ArtavazdBalayan thx mate、それは終わった。私はあなたの質問を得ていませんでした。あなたは説明できますか? – Alireza0772

+0

何かをシリアル化する必要がある場合は、[JSON](http://www.newtonsoft.com/json/help/html/SerializeObject.htm)、[XML](https://msdn.microsoft.com/) en-us // library/system.xml.serialization.xmlserializer%28v = vs.110%29.aspx)または少なくとも[バイナリシリアル化](https://msdn.microsoft.com/en-us//library/バイナリフォーマッタ%28v = vs.110%29.aspx)ただし手作業ではありません。 File、Streamsでスキルを取得するだけの場合は、それは大丈夫です:) –

答えて

0

あなたは、文字列から終了文字をトリミングする必要があります。

string album = "Saz Single\0\0\0\0\0\0\0\0\0"; 
    string singer = "Bahram\0\0\0\0\0\0\0"; 
    string title = "saz\0\0\0"; 

    album = album.Trim('\0'); 
    singer = singer.Trim('\0'); 
    title = title.Trim('\0'); 

    string a = album + " " + singer + " " + title; 

を理想的には、あなたのソングクラスのメソッドでその機能を置きます!また、SongクラスのToString()メソッドをオーバーライドして、必要なものを返すこともできます。

関連する問題