[英]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 Mapping和IDL到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.