Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法-public static long parseLong(字符串s,int基数)在幕后发生了什么_Java_Radix - Fatal编程技术网

Java 方法-public static long parseLong(字符串s,int基数)在幕后发生了什么

Java 方法-public static long parseLong(字符串s,int基数)在幕后发生了什么,java,radix,Java,Radix,我需要根据包的名称生成一致的唯一Long。在Eclipse中不使用“convertstringtolong”,我想我可以通过使用方法publicstaticlongpasselong(strings,int-radix)在运行时实现相同的任务 我想我需要使用类似- Long.parseLong(“榛子”,36)返回1356099454469L 这是我从问题中得到的- 转换包含字符的字符串时,为什么需要将基数设置为36?好吧,基本上将其视为基数为36的数字。例如,字符串“012”表示2+1*36+

我需要根据包的名称生成一致的唯一Long。在Eclipse中不使用“convertstringtolong”,我想我可以通过使用方法publicstaticlongpasselong(strings,int-radix)在运行时实现相同的任务

我想我需要使用类似-
Long.parseLong(“榛子”,36)返回1356099454469L

这是我从问题中得到的-


转换包含字符的字符串时,为什么需要将基数设置为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
值可供使用,因此除非您的包名称受到相当大的限制,否则您将无法计算出唯一的映射。

好的,您基本上将其视为以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
值可供使用,因此除非你的包名受到很大限制,否则你不会得到唯一的映射。

我可以将十进制数/二进制数转换为十六进制数,但对于字符串,我有点困惑。你是怎么计算的?字符串“012”表示2+1*36+0*36(平方)?它不需要区分大小写。@user470184:想想如果“012”在基数10中意味着什么——它意味着2+1*10+0*(10平方)。现在取10,记住你要求它使用36号基数。。。你会看到我从哪里得到的数字。10进制的“012”不仅仅是12吗?@user470184:是的,因为2+1*10+0*100是12。我可以将十进制数/二进制数转换为十六进制数,但对于字符串,我有点困惑。你是怎么计算的?字符串“012”表示2+1*36+0*36(平方)?它不需要区分大小写。@user470184:想想如果“012”在基数10中意味着什么——它意味着2+1*10+0*(10平方)。现在取10,记住你要求它使用36号基数。。。你会看到我从哪里得到的数字。以10为基数的“012”不仅仅是12吗?@user470184:是的,因为2+1*10+0*100是12。