簡體   English   中英

SQL圖像數據類型-C#顯示輸出

[英]SQL Image DataType - C# Display Output

我的桌子上有圖像數據類型。 當我使用SQL Server Management Studio查詢時,在結果窗口中將顯示以下內容:網格和文本。

0x255044462D312E320D0A0D0A332030206F [長度截短]

我試圖在一個小的C#程序中復制它。

但是,當我使用SqlCommand或LINQ時,都會得到輸出:JVBERi0xLjINCg0KMyAwIG9iag0KPDwNCi9FIDIxODgyDQovSCBbIDExNTAgMTUxIF0NCi9MIDIyM [TRUNCATED]

有什么想法我需要做的才能顯示0x25 ...輸出? 我曾嘗試做byte []轉換和編碼,但似乎找不到正確的方法。

如果我不清楚,請告訴我。

編輯:我不試圖顯示圖像,只是0x25 ...

有什么想法嗎?

string forDisplay = "0x" + BitConverter.ToString(yourByteArray).Replace("-", "");

AFAIK,.Net不包括將任意字節數組打印為單個十六進制數字的任何方法。 (直到.Net 4.0的System.Numerics.BigInteger

但是,您應該能夠寫

"0x" + BitConverter.ToString(bytes).Replace("-", "")

請注意,這效率極低。 如果要以實際代碼執行此操作,請在循環中使用 StringBuilder
編輯 :這樣:

 
 
 
 
  
  
  public static string ToHexString(this byte[] bytes) { var builder = new StringBuilder(bytes.Length * 2 + 2); builder.Append("0x"); for (int i = 0; i < bytes.Length; i++) builder.Append(bytes[i].ToString("X2")); return builder.ToString(); }
 
 
  

第二編輯 :這是一個新版本,確實更快。 (是的,我知道您不需要它;反正它就在這里)

private static char ToHexDigit(int i) {
    if (i < 10) 
        return (char)(i + '0');
    return (char)(i - 10 + 'A');
}
public static string ToHexString(byte[] bytes) {
    var chars = new char[bytes.Length * 2 + 2];

    chars[0] = '0';
    chars[1] = 'x';

    for (int i = 0; i < bytes.Length; i++) {
        chars[2 * i + 2] = ToHexDigit(bytes[i] / 16);
        chars[2 * i + 3] = ToHexDigit(bytes[i] % 16);
    }

    return new string(chars);
}

暫無
暫無

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

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