【发布时间】:2016-01-27 06:14:43
【问题描述】:
我有一个 C 代码,其中包含以下行。
ipj_set_value(&iri_device,E_IPJ_KEY_REPORT_CONTROL_TAG,E_IPJ_TAG_FLAG_BIT_EPC | E_IPJ_TAG_FLAG_BIT_TID |E_IPJ_TAG_FLAG_BIT_TIMESTAMP | E_IPJ_TAG_FLAG_BIT_CHANNEL);
我正在使用 JNA 从 Java 调用此设置值方法。我如何在 Java 中做同样的事情?那就是我想使用“|”传递许多整数符号。这在此处用作“或”。下面是我上面用到的方法定义和变量。
ipj_error ipj_set_value(
ipj_iri_device *iri_device, /**< [in] IRI device data structure */
ipj_key key, /**< [in] Key code to set*/
uint32_t value) /**< [in] Value to set */
{
return ipj_set(iri_device, key, 0, 0, value);
}
#define E_IPJ_TAG_FLAG_BIT_EPC ((ipj_tag_flag)(0x1))
#define E_IPJ_TAG_FLAG_BIT_TID ((ipj_tag_flag)(0x2))
#define E_IPJ_TAG_FLAG_BIT_TIMESTAMP ((ipj_tag_flag)(0x20))
#define E_IPJ_TAG_FLAG_BIT_CHANNEL ((ipj_tag_flag)(0x100))
【问题讨论】:
-
一样吗?你试过了吗?
-
是的。尝试将“1|64”转换为 int 格式时出现数字格式异常。我从我的 websocket 客户端得到这个字符串。
-
你需要将它作为字符串传递
-
@VD' 我的方法声明应该等同于 C 代码的声明。它期望一个整数参数。所以不能将其作为字符串传递
-
当然,“1|64”不是一个有效的整数。不是在 C 中,不是在 Java 中。如果您确实允许您的 Javascript 客户端确定此值,那么您应该在 Javascript 中评估此表达式“1|64”并将结果值 (65) 传递给 Java。
标签: java methods parameters int jna