在CORBA客户机/服务器应用程序中将无符号长(从C+;+;)分配为长(Java)?
在服务器端,我有一个返回无符号长值的函数(服务器是用C++编写的),比如:在CORBA客户机/服务器应用程序中将无符号长(从C+;+;)分配为长(Java)?,java,c++,type-conversion,corba,Java,C++,Type Conversion,Corba,在服务器端,我有一个返回无符号长值的函数(服务器是用C++编写的),比如: class Sth { private: CORBA::ULong u; public: CORBA::ULong get() { return this.u; } }; 如何将服务器返回的值分配给变量(在客户端)?我的意思是,Java中没有未签名的long。。。是否可以将其分配给long?像这样: // corba client stuff long var = server_ob
class Sth {
private:
CORBA::ULong u;
public:
CORBA::ULong get()
{
return this.u;
}
};
如何将服务器返回的值分配给变量(在客户端)?我的意思是,Java中没有未签名的long。。。是否可以将其分配给long?像这样:
// corba client stuff
long var = server_obj.get();
可以吗?尝试在java中使用BigInteger类而不是long类。没有其他方便的方法进行转换。尝试在java中使用BigInteger类而不是long类。没有其他方便的方法进行转换。在许多情况下,您知道无符号长度永远不会超过2^31,即最大长度。那么在Java中使用long就可以了 在其他一些情况下,实际值几乎没有意义,只要它们是唯一的,例如某种句柄。同样,您可以使用jlong 在另外一些情况下,Java只被用作中间语言,如果从C到Java再到C的转换是正确的,那么您就不必在意在转换过程中是否存在有符号/无符号的不匹配
但是如果上述异常都不成立,你应该使用BigInteger或者重新创建它(坏主意)在很多情况下,你知道无符号长永远不会超过2^31,也就是最大长。那么在Java中使用long就可以了 在其他一些情况下,实际值几乎没有意义,只要它们是唯一的,例如某种句柄。同样,您可以使用jlong 在另外一些情况下,Java只被用作中间语言,如果从C到Java再到C的转换是正确的,那么您就不必在意在转换过程中是否存在有符号/无符号的不匹配
但是如果上述异常都不成立,那么应该使用biginger或重新创建它(坏主意)您必须查看IDL映射<代码>未登录的OMG IDL的映射到