2014-11-25 148 views
0

我使用System.Drawing.Imaging從圖像目錄中提取圖像標籤。我可以拉標籤就好,但問題是字符串脫離PropertyItem是空終止,但我比較它的字符串不是。我的問題是,我如何比較空終止的字符串與C#中的非空終止的字符串?將一個以空字符結尾的字符串與一個非空終止的字符串進行比較

這是我跑

byte[] tagBytes = new byte[tag.Length * sizeof(char)]; 
System.Buffer.BlockCopy(tag.ToCharArray(), 0, tagBytes, 0, tagBytes.Length); 

pnl_slider.Visible = false; 
string relativePath = ConfigurationManager.AppSettings["PhotoPathRelative"]; 
DirectoryInfo info = new DirectoryInfo(ConfigurationManager.AppSettings["PhotoPathPhysical"]); 
FileInfo[] Files = info.GetFiles("*.jpg").OrderBy(p => p.CreationTime).ToArray(); 
foreach (FileInfo file in Files) 
{ 
    System.Drawing.Image img = new Bitmap(file.FullName); 
    foreach (PropertyItem item in img.PropertyItems) 
    { 
     if (item.Id == 40094) 
     { 
      str += "'" + Encoding.Unicode.GetString(item.Value).Trim() + "' " + BitConverter.ToString(item.Value) + " == " + BitConverter.ToString(tagBytes) + "<br/>"; 
     } 
    } 
    img.Dispose(); 
} 

「STR」的輸出看起來像這樣的代碼:

'wildlife' 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00-00-00 == 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00 
'wildlife' 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00-00-00 == 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00 
'wildlife' 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00-00-00 == 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00 
'macro' 6D-00-61-00-63-00-72-00-6F-00-00-00 == 77-00-69-00-6C-00-64-00-6C-00-69-00-66-00-65-00 
+0

只需要調用'Encoding.Unicode.GetString(item.Value).Trim ()'在字節數組上,輸出字符串應該是相同的,你在輸出中看到最後的'00-00'已經被解碼器去除。 – kennyzx 2014-11-25 03:33:37

+0

@kennyzx我給了它一個嘗試,沒有骰子,同樣的問題。 'if(Encoding.Unicode.GetString(item.Value).Trim()== Encoding.Unicode.GetString(tagBytes).Trim())' – ChrisStillwell 2014-11-25 03:42:19

+1

看起來像你必須修剪終結者[手動](http:///stackoverflow.com/a/864274/815938),我認爲這是由解碼器完成的,但我錯了。 – kennyzx 2014-11-25 04:07:07

回答

相關問題