資源簡介
C#開發的.kgtemp(KuG ou緩存文件)轉換.mp3文件的源代碼,僅用于學習交流,勿用于商業用途。

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.IO;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Text;
namespace?Kgtemp_Converter
{
????public?class?ID3Info
????{
????????public?string?title?{?get;?set;?}
????????public?string?Artist?{?get;?set;?}
????????public?string?Album?{?get;?set;?}
????????public?string?Year?{?get;?set;?}
????????public?string?Comment?{?get;?set;?}
????}
????public?class?ID3Helper
????{
????????#region?MP3信息結構
????????///?
????????///?MP3信息結構
????????///?
????????public?struct?Mp3Info
????????{
????????????public?string?identify;?//TAG,三個字節
????????????public?string?title;?//歌曲名30個字節
????????????public?string?Artist;?//歌手名30個字節
????????????public?string?Album;?//所屬唱片30個字節
????????????public?string?Year;?//年4個字符
????????????public?string?Comment;?//注釋28個字節
????????????public?char?reserved1;?//保留位,一個字節
????????????public?char?reserved2;?//保留位,一個字節
????????????public?char?reserved3;?//保留位,一個字節
????????}
????????#endregion
????????public?static?Encoding?DetectEncoding(byte?encoding?=?0x00)
????????{
????????????Encoding?tagEncoding?=?null;
????????????//?Checks?to?see?what?encoding?type?it?is.
????????????switch?(encoding)
????????????{
????????????????case?0x00:?tagEncoding?=?Encoding.GetEncoding(“ISO-8859-1“);?break;
????????????????case?0x01:?tagEncoding?=?Encoding.GetEncoding(“UTF-16“);?break;
????????????????case?0x02:?tagEncoding?=?Encoding.GetEncoding(“UTF-16BE“);?break;
????????????????case?0x03:?tagEncoding?=?Encoding.UTF8;?break;
????????????????default:?throw?new?Exception(“Invalid?encoding?type?of?ID3v2.“);
????????????}
????????????return?tagEncoding;
????????}
????????public?static?Mp3Info?GetMp3Info(string?FileName)
????????{
????????????//打開文件
????????????FileStream?fs?=?new?FileStream(FileName?FileMode.Open?FileAccess.Read);
????????????Encoding?FileEncoding?=?Encoding.GetEncoding(“GBK“);
????????????//獲取MP3文件最后128個字節ID3信息保存于此如果獲取失敗則返回null
????????????const?int?seekPos?=?128;
????????????fs.Seek(-seekPos?SeekOrigin.End);?//從文件尾部開始往回seek到128字節處
????????????int?rl?=?0;
????????????byte[]?Last128?=?new?byte[seekPos];
????????????rl?=?fs.Read(Last128?0?seekPos);?//將最后的128個字節讀出來放入byte[]中
????????????fs.Seek(0?SeekOrigin.Begin);??//恢復Seek位置
????????????//關閉文件
????????????fs.Close();
????????????//將mp3最后的128個字節格式化為Mp3Info
????????????Mp3Info?myMp3Info?=?FormatMp3Info(Last128?FileEncoding);
????????????//返回
????????????return?myMp3Info;
????????}
????????#region?將mp3最后的128個字節格式化為Mp3Info
????????///?
????????///?將mp3最后的128個字節格式化為Mp3Info
????????///?
????????///?從MP3文件中截取的二進制信息
????????///?返回一個Mp3Info結構
????????private?static?Mp3Info?FormatMp3Info(byte[]?Info?System.Text.Encoding?Encoding)
????????{
????????????Mp3Info?myMp3Info?=?new?Mp3Info();
????????????string?str?=?null;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????28160??2018-10-14?14:10??Kgtemp_Convert_Mp3\bin\Debug\Kgtemp_Convert_Mp3.exe
?????文件??????38400??2018-10-14?14:10??Kgtemp_Convert_Mp3\bin\Debug\Kgtemp_Convert_Mp3.pdb
?????文件??????11600??2018-10-14?14:10??Kgtemp_Convert_Mp3\bin\Debug\Kgtemp_Convert_Mp3.vshost.exe
?????文件???????6913??2018-04-15?18:56??Kgtemp_Convert_Mp3\ID3Helper.cs
?????文件??????14162??2018-10-14?14:10??Kgtemp_Convert_Mp3\Kgtemp_Converter.cs
?????文件??????13613??2018-10-14?14:08??Kgtemp_Convert_Mp3\Kgtemp_Converter.Designer.cs
?????文件??????13957??2018-10-14?14:08??Kgtemp_Convert_Mp3\Kgtemp_Converter.resx
?????文件???????3790??2018-04-15?18:57??Kgtemp_Convert_Mp3\Kgtemp_Convert_Mp3.csproj
?????文件???????5420??2018-04-15?18:48??Kgtemp_Convert_Mp3\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
?????文件???????6395??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????1571??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.csproj.FileListAbsolute.txt
?????文件????????986??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.csproj.GenerateResource.Cache
?????文件??????28160??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.exe
?????文件???????5788??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.Kgtemp_Converter.resources
?????文件??????38400??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.pdb
?????文件????????180??2018-04-20?00:40??Kgtemp_Convert_Mp3\obj\x86\Debug\Kgtemp_Convert_Mp3.Properties.Resources.resources
?????文件???????5420??2018-04-19?19:53??Kgtemp_Convert_Mp3\obj\x86\Release\DesignTimeResolveAssemblyReferences.cache
?????文件???????6399??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????1599??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.csproj.FileListAbsolute.txt
?????文件????????986??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.csproj.GenerateResource.Cache
?????文件??????27136??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.exe
?????文件???????5788??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.Kgtemp_Converter.resources
?????文件??????36352??2018-10-14?14:10??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.pdb
?????文件????????180??2018-04-20?00:40??Kgtemp_Convert_Mp3\obj\x86\Release\Kgtemp_Convert_Mp3.Properties.Resources.resources
?????文件????????510??2018-04-15?13:56??Kgtemp_Convert_Mp3\Program.cs
?????文件???????1368??2018-04-15?13:34??Kgtemp_Convert_Mp3\Properties\AssemblyInfo.cs
?????文件???????2884??2018-04-15?13:34??Kgtemp_Convert_Mp3\Properties\Resources.Designer.cs
?????文件???????5612??2018-04-15?13:34??Kgtemp_Convert_Mp3\Properties\Resources.resx
?????文件???????1101??2018-04-15?13:34??Kgtemp_Convert_Mp3\Properties\Settings.Designer.cs
?????文件????????249??2018-04-15?13:34??Kgtemp_Convert_Mp3\Properties\Settings.settings
............此處省略16個文件信息
評論
共有 條評論