Ocaml 其参数为无符号32位整数的函数

Ocaml 其参数为无符号32位整数的函数,ocaml,Ocaml,在ocaml中,我试图编写一个函数,该函数以32位无符号整数作为参数。但是,我在确定要在函数的类型声明中使用的正确标识符时遇到问题。通过谷歌搜索,我只能找到int32。谢谢型号签名32位算术。如果您只打算传递这些值(例如,将它们传递给C API),或者使用不依赖于签名的操作,例如add,mul,sub,则可以使用Int32。除法和模在有符号数和无符号数上的实现方式不同,所以不应该使用Int32模块的除法和模 (关于这个主题有一个例子。)除了gasche的答案之外,还有一个库,它提供了一个uint

在ocaml中,我试图编写一个函数,该函数以32位无符号整数作为参数。但是,我在确定要在函数的类型声明中使用的正确标识符时遇到问题。通过谷歌搜索,我只能找到int32。谢谢

型号签名32位算术。如果您只打算传递这些值(例如,将它们传递给C API),或者使用不依赖于签名的操作,例如
add
mul
sub
,则可以使用
Int32
。除法和模在有符号数和无符号数上的实现方式不同,所以不应该使用Int32模块的除法和模


(关于这个主题有一个例子。)

除了gasche的答案之外,还有一个库,它提供了一个uint32类型的模块和相应的操作(包括除法)-。

您好,谢谢。我看了一下caml列表讨论。它只提到除法和模是一个问题,但我认为模也是一个问题?当我说“模”时,我实际上是指“模”。对不起,如果不是正确的英语单词。为了清楚起见,我将编辑我的答案。在caml列表中,他们也提到了“模数”,所以模数可能也有问题?另一种情况是,在不同类型之间转换时,差异可能很重要。例如,如果在64位系统上将
Int32.t
转换为
int
,则没有直接的方法将
Int32.t
值视为无符号。从什么时候开始
mul
不依赖于符号?!对于未来的读者来说,这个图书馆一直在继续