gpt4 book ai didi

java - 方法的幕后发生了什么 - public static long parseLong(String s,int radix)

转载 作者:行者123 更新时间:2023-12-01 17:34:41 26 4
gpt4 key购买 nike

我需要根据包的名称生成一致的唯一Long。我认为我可以在运行时通过使用方法 public static long parseLong(String s,int radix) 来实现相同的任务,而不是在 Eclipse 中使用“Convert string to long”?

我想我需要使用类似 -
Long.parseLong("Hazelnut", 36) 返回 1356099454469L

这是我从问题中得到的 - How to convert String to long in Java?

为什么转换包含字符的字符串时需要将基数设置为 36?

最佳答案

嗯,您基本上将其视为以 36 为基数的数字。例如,字符串“012”表示 2 + 1 * 36 + 0 * 362。当你用完数字时,你会转到字母 - 所以“ABC”意味着 12来自 'C' + 11来自 'B' * 36 + 10来自“A” * 362

如果您了解十六进制的工作原理,除了使用拉丁字母表中的所有字符之外,它是相同的。

对于 0-9、A-Z、a-z 之外的任何内容,它都会失败 - 而且对于相当长的字符串,它也会失败; long 最多只能工作到 263,在 36 进制中您很快就能通过。例如,“Hazelnut12345”就失败了。哦,这是不区分大小写的,因此“foo”的值与“FOO”的值相同 - 这是否满足了您的唯一性要求?

从根本上来说,您只有 264 long 值可供使用,因此除非您的包名称受到严格限制,否则您将无法计算出唯一的映射.

关于java - 方法的幕后发生了什么 - public static long parseLong(String s,int radix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729886/

26 4 0
文章推荐: java - 程序如何读取unicode?
文章推荐: java - 将 Arraylist 保存到文本文档中的单独行
文章推荐: java - 为什么 Velocity 不显示
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com