Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CORBA客户机/服务器应用程序中将无符号长(从C+;+;)分配为长(Java)?_Java_C++_Type Conversion_Corba - Fatal编程技术网

在CORBA客户机/服务器应用程序中将无符号长(从C+;+;)分配为长(Java)?

在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

在服务器端,我有一个返回无符号长值的函数(服务器是用C++编写的),比如:

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的映射到 CORBA::C++中的ULUN < />代码>爪哇中的<代码> INT/COM>。有关CORBA语言映射的更多信息,请参阅和。

您必须查看IDL映射<代码>未登录的OMG IDL的映射到 CORBA::C++中的ULUN < />代码>爪哇中的<代码> INT/COM>。有关CORBA语言映射的更多信息,请参阅和。

能否澄清您的问题?文本指的是未签名的long,但是C++代码使用时间长,get方法返回无效。@艾里克·马伦芬特:好的,我编辑了我的代码,当然,你可以把返回值映射到一个长的值,但是CORBA的东西会在以前把它转换成int。你能解释一下你的问题吗?文本指的是未签名的long,但是C++代码使用时间长,get方法返回无效。@艾里克·马伦芬特:好的,我编辑了我的代码,当然,你可以把返回值映射成一个长的,但是corba的东西在之前已经把它转换成了int。ULong在JavaULong中映射成int在JavaULong中映射成int在JavaULong中映射成int我的理解是@mazix将自己实现Android端,而不是重用一些Java corba适配器。哪个Android?构建CORBA适配器并询问基本的CORBA问题不合适。对不起,s/Android/client/。我的fault.ULong被映射到Java中的int。我的理解是@mazix将自己实现Android端,而不是重用一些Java CORBA适配器。哪个Android?构建CORBA适配器并询问基本的CORBA问题不合适。对不起,s/Android/client/。是我的错。