将vb6 StrConv(string,vbunicode)转换为c#

时间:2012-10-11 09:00:35

标签: c# vb6-migration

我将以下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中不存在。

有人有什么想法吗?

1 个答案:

答案 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();
}