簡體   English   中英

在CORBA客戶端/服務器應用程序中使用unsigned long(從C ++)到long(Java)?

[英]Assinging unsigned long (from C++) to long (Java) in CORBA client/server app?

在服務器端,我有返回unsigned long值的函數(服務器是用C ++編寫的),讓我們說:

class Sth {

private:
   CORBA::ULong u;
public:
   CORBA::ULong get()
   {
    return this.u;
   }

};

如何分配(在客戶端)從服務器返回到變量的值? 我的意思是,Java中沒有unsigned long ...是否可以將它分配給long? 像這樣:

// corba client stuff
long var = server_obj.get();

會沒事嗎?

您必須查看IDL映射。 unsigned long的OMG IDL映射到C ++中的CORBA::ULong和Java中的int 有關CORBA語言映射的更多信息,請參閱IDL到Java MappingIDL到C ++ Mapping

嘗試在java中使用BigInteger類而不是long。 沒有任何其他方便的方式來進行轉換。

在許多情況下,你知道unsigned long永遠不會超過2 ^ 31,即MAX_LONG。 然后在Java中使用long是很好的。

在其他一些情況下,實際值沒有什么意義,只要它們是唯一的,例如某種句柄。 再次,您可以使用jlong​​。

在其他情況下,Java僅用作中間件,如果從C到Java到C的轉換是正確的,那么您並不關心路上是否存在簽名/未簽名的不匹配。

但是,如果上述異常都沒有,你應該使用BigInteger或重新發明它( 壞主意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM