Java 中的 C Stroll 等价物
我有一段 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不能,因为
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 theBigInteger
class.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.它是等效的,但请记住 Java 中的
long
不是无符号的。因此,Javalong
位于[-2^63, 2^63 - 1]
中。It is equivalent but keep in mind that
long
in Java is not unsigned. Therefore, a Javalong
is in[-2^63, 2^63 - 1]
.使用
BigInteger(字符串 val, int 基数)
use
BigInteger(String val, int radix)