2012-10-11 57 views
0

我無法將以下VB6代碼轉換爲c#4.0嗎?該函數從oracle數據庫中獲取BLOb並將其轉換爲字節。刪除代碼未通過需要這個例子之後,它看起來是這樣的......將vb6 StrConv(字符串,vbunicode)轉換爲c#

Function tempFunc(Data as Variant) as byte() 

    tempFunc = StrConv(Data, vbUnicode) 

End Function 

功能轉換到C#後...

byte[] tempFunc(object data) 
{ 
    ...code... 
} 

我試圖內線轉換,但有一個問題...

Microsoft.VisualBasic.Strings.StrConv(data, VBStrConv.???); 

沒有在VBStrConv枚舉任何更多的爲Unicode等效標誌... 擡頭一些其他的例子,發現這...

byteData = System.Text.Encoding.UTF8.GetBytes(data); 

但是這需要一個字符串,因此是無益的... 發現使用內存流然而其轉換另一個例子,那就需要元數據,這不會從數據庫中的原始斑點存在。

任何人有任何想法?

回答

1

您可以使用BinaryFormatter

private byte[] tempFunc(object obj) 
{ 
    if(obj == null) 
     return null; 
    BinaryFormatter bf = new BinaryFormatter(); 
    MemoryStream ms = new MemoryStream(); 
    bf.Serialize(ms, obj); 
    return ms.ToArray(); 
} 
+1

[參見這裏:**對象ByteArray的轉換,反之亦然**](http://www.codeproject.com/Articles/7450/Object-ByteArray -Converter) –

+0

這不需要元數據來序列化內存流嗎? – Thundter