簡體   English   中英

比較以空終止的字符串與非空終止的字符串

[英]Comparing a null terminated string to a non-null terminated string

我使用System.Drawing.Imaging從圖像目錄中提取圖像標簽。 我可以拉標簽就好了,但是問題是來自PropertyItem的字符串以null結尾,但是與之比較的字符串卻沒有。 我的問題是,如何在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

手動修剪null可以達到此答案所示的效果:

從System.Text.Encoding.Unicode.GetString獲取以null結尾的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM