0

我在将以下 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); 

但是,这需要一个字符串,因此无济于事...找到了另一个使用内存流的示例,但是要对其进行转换,它将需要元数据,而该元数据在数据库的原始 BLOb 中不存在。

有人有想法么?

4

1 回答 1

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();
}
于 2012-10-11T09:02:57.777 回答