Java 中的 C Stroll 等价物

发布于 2024-12-02 23:11:42 字数 713 浏览 1 评论 0原文

我有一段 Objective C 代码,我必须将其翻译成 Java,但是在转换一行时遇到了一些问题。在 Objective C 代码中,我有:UInt64 iz = strtoull(s,&s1,16);。我在互联网上搜索 abotu strtoull 并找到了以下信息:

strtoul 会将字符串转换为无符号长整型。一个 该函数的一个重要特点是能够接受数据 各种基数并转换为十进制。

第一个参数不得包含 + 或 -。第二个论点 (char **endptr) 似乎浪费空间!如果设置为NULL, STRTOL 似乎沿着字符串向下移动,直到找到无效的 字符,然后停止。然后,如果满足以下条件,则转换所有读取的有效字符: 字符串以无效字符开头该函数返回零 (0).

第三个参数(基数)的值可以为 0 或 2-32。

0 - strtol 将尝试选择基地。仅支持 Dec、Oct Hex。 2-31 - 使用的基础。

我试图找到一种在 Java 中做到这一点的方法。作为一些研究,我得到了这个:

long l=Long.parseLong(md5Hash, 16);

我的问题是,parseLong 相当于 strtoull 吗?我可以将它用于我的应用程序吗?如果没有,你能建议我用什么吗?

提前致谢!

I have a Objective C code,which I have to translate in Java,but I have a little problem with converting one line. In Objective C code I have : UInt64 iz = strtoull(s,&s1,16);. I was searching over the internet abotu strtoull and I find this information for it :

strtoul will convert a string to an unsigned long integer. An
important feature of this function is the ability to accept data in
various number bases and convert to decimal.

The first argument must not contain a + or -. The second argument
(char **endptr) seems to be a waste of space! If it is set to NULL,
STRTOL seems to work its way down the string until it finds an invalid
character and then stops. All valid chars read are then converted if
the string starts with an invalid character the function returns ZERO
(0).

The Third argument (base) can have a value of 0 or 2-32.

0 - strtol will attempt to pick the base. Only Dec, Oct Hex supported.
2-31 - The base to use.

I tried to find a way to do this in Java.As a made some researches I got this :

long l=Long.parseLong(md5Hash, 16);

And my question is,is parseLong equivalent to strtoull and can I use it for my application? If not can you suggest me what can I use?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

长途伴 2024-12-09 23:11:42

不能,因为 long 在 Java 中是有符号的。如果您需要 64 位完整值范围的无符号整数,则必须使用 BigInteger 类。

You can't because long is signed in Java. If you need unsigned integers for the full value range of 64 Bit then you have to use the BigInteger class.

乖乖 2024-12-09 23:11:42

Long.parseLong 是将字符串解析为 long 的常用方法。但请注意,Java 没有无符号类型。

Long.parseLong is the usual way of parsing a string into a long. But be aware that Java does not have unsigned types.

也只是曾经 2024-12-09 23:11:42

它是等效的,但请记住 Java 中的 long 不是无符号的。因此,Java long 位于 [-2^63, 2^63 - 1] 中。

It is equivalent but keep in mind that long in Java is not unsigned. Therefore, a Java long is in [-2^63, 2^63 - 1].

囍孤女 2024-12-09 23:11:42

使用
BigInteger(字符串 val, int 基数)

use
BigInteger(String val, int radix)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文