如何在1处创建所有位的长数

时间:2014-12-22 03:52:12

标签: firefox-addon jsctypes

我需要将~0L传递给我的函数,我怎么能这样做,无论我做什么〜0都转向-1

这是C代码:

812   int result = GetProperty(window, property_name,
813                            (~0L), // (all of them)
814                            &type, &format, &num_items, &properties);

这是我的jsctypes:

var result = GetProperty(window, property_name, ctypes.long(~0), type.address(), format.address(), num_items.address(), properties.address()

请注意ctypes.long(~0)如何将此为32位的111111111111111111111111111111为64位的64位?

由于

参考主题:What does (~0L) mean?

2 个答案:

答案 0 :(得分:1)

将其声明为unsigned long ~0UL

答案 1 :(得分:0)

解决方案是使用ctypes.long(~0)这对32位和64位有用:)感谢@arai。

  

21:45 noida如何在jsctypes中使用〜0L?

     

22:07 arai noida:32位还是64位?

     

22:11 noida你能告诉我怎么做两个plz

     

22:17 arai noida:我猜ctypes.int32_t(~0)和ctypes.int64_t(~0)会起作用

     

22:20 noida -0x80000000

     

22:20 noida那不会工作吗?

     

22:20 arai它使用ctypes.long作为参数,所以ctypes.long(~0)会更好

     

22:23 arai~0L是0xFFFFFFFFFFFFFFFF,对吧?

     

22:24诺伊达,我认为是:0x7ffffff

     

22:29 arai printf("%lx\n", ~0L);输出" ffffffffffffffff"

     

22:31 arai使用ctypes.long(~0)来保持一致性

会更好      22:33诺伊达也使用long方法将64/32位交叉?

     

22:37 arai"这会在所有平台上自动转换为Int64 JavaScript对象,因为它不知道这是32位还是64位值。这样做是为了兼容性。"

     

22:37 arai https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes