2

我已经以文件的形式(即,未打包在 GIOP 消息中)单独获得了编组的 CDR 数据,我需要将其解组并显示在屏幕上。我通过以下方式了解数据是什么类型,并有工作代码可以成功地做到这一点:

ValueFactory myFactory = (ValueFactory)myConstructor.newInstance( objParam );
StreamableValue myObject = myFactory.init();
myObject._read( myCDRInputStream );

其中 init() 调用 myObjectImpl() 的构造函数。_read 是 org.omg.CORBA.portable.Streamable _read(InputStream) 方法。

只要封送数据与运行我的阅读器程序的计算机具有相同的字节序,这就会起作用,但是我需要能够处理数据的字节序与运行阅读器的计算机的字节序不同的情况。我知道字节序存在于 GIOP 消息中,而我没有。假设我发现我需要更改字节顺序,我该如何告诉流阅读器?

谢谢!

4

1 回答 1

0

如果您访问ByteBuffer输入流的底层,那么您可以设置字节顺序。例如我用它自己打开matlab文件

    File file = new File("swiss_roll_data.matlab5");
    FileChannel channel = new FileInputStream(file).getChannel();
    ByteBuffer scan = channel.map(MapMode.READ_ONLY,0,channel.size());
    scan.order(ByteOrder.BIG_ENDIAN);

但是,我不知道您的 corba 框架是否乐于从字节缓冲区中读取(corba 是如此 90 年代)。所以也许这对你不起作用。

于 2009-12-11T10:30:06.793 回答