我将以下VB6代码转换为c#4.0时遇到问题?此函数从oracle数据库获取BLOb并将其转换为字节。删除此示例不需要的代码后,它看起来像这样......
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);
然而这需要一个字符串,因此无益...... 找到了另一个使用内存流的例子但是为了转换它,它需要元数据,这些元数据在数据库的原始BLObs中不存在。
有人有什么想法吗?
答案 0 :(得分: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();
}