[英]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.