标签: base36

为什么 JavaScript base-36 转换似乎不明确

我目前正在编写一段使用 base 36 编码的 JavaScript。

我遇到了这个问题:

parseInt("welcomeback",36).toString(36)
Run Code Online (Sandbox Code Playgroud)

看来要回来了"welcomebacg"

我在 Chrome 开发人员的控制台和 Node.js 中对此进行了测试,结果相同。

这个结果有什么合乎逻辑的解释吗?

javascript base node.js base36 google-chrome-devtools

6
推荐指数
1
解决办法
339
查看次数

按特定顺序获取所有文件夹

我有一个由base36(0-9然后是az)组织的文件夹列表.现在我读取它们的当前实现是迭代一个数字,将其转换为base32,检查文件夹是否存在.如果它没有结束,它确实读取了数据.

这里的问题是文件夹的数字有差距.例如:0,1,2,4,5,6,8,a,b,c,g,k,p

以正确的顺序迭代它们的最佳方法是什么(考虑到可以有任意数量的文件夹)?

(注意:我不能简单地获取所有目录,因为它们按字母顺序排列.例如2A将放在z之前)

c# base36

5
推荐指数
2
解决办法
271
查看次数

如何过滤掉base36 ID中的亵渎语?

我想在我正在开发的Web应用程序中使用base36 ...但由于用户可以看到id作为URL,我想过滤掉亵渎.有人解决了这个吗?或者这甚至是一个真正的问题?

在我的数据库序列中跳过数字是否有意义?

profanity base36

5
推荐指数
1
解决办法
1262
查看次数

优化将int转换为base36

我目前从int转换为base36字符串(70%〜程序时间).这段代码有没有明显的优化?

public static final String alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
public static StringBuilder b = new StringBuilder();
public static String sign = "";

public static String convertToBase36(int number)
{
    if (number == 0)
    {
        return "0";
    }

    b.delete(0, b.length());

    sign = "";
    if (number < 0)
    {
        sign = "-";
        number = -number;
    }

    int i = 0;
    int counter = 10;

    while (number != 0 && counter > 0)
    {
        counter--;
        i = number % 36;
        number = (number - i)/36; …
Run Code Online (Sandbox Code Playgroud)

java string optimization base36

5
推荐指数
1
解决办法
2493
查看次数

十进制和基数之间的转换36

我想用PHP转换基数为36的数字.该函数base_convert无法正常工作,因为我想转换大数字:如果我将它从基数36再次转换为十进制,我不会得到我的初始数字.

我试过在多个网站上给出了一些功能,但我从来没有得到相同的结果.此外,这两个网站(在Javascript中)给出相同的结果:

例如1010701001118000000000000000必须转换为3IZS0ZE1RQ68W8SSW4.

以下是我尝试过的功能(哪些功能不起作用):

php base36

5
推荐指数
1
解决办法
3642
查看次数

如何在 C# 中将浮点数转换为 Base36,与 JavaScript 的 .toString(36) 相同

我正在尝试将一些代码转换为 C#(从 JavaScript),我需要通过 C# 将双数(0.04036483168558814)转换为“.toString(36)/Base36”。

JavaScript 代码在这里:

 var num = 0.04036483168558814;
 var n = num.toString(36);
Run Code Online (Sandbox Code Playgroud)

输出(n)如下:

0.1gb9f0lx08ij9wwfwkyk5d0a4i
Run Code Online (Sandbox Code Playgroud)

我需要 C# 的上述相同结果,那么如何在 C# 中获得相同的结果?

我应用了一些代码,但它们不起作用..我的代码如下(由 C# 编写):

1)

string OutputVal = Convert.ToString(Int64.Parse("0.04036483168558814"), 36);
Run Code Online (Sandbox Code Playgroud)

或者

string OutputVal = Convert.ToString(Int64.Parse("0.04036483168558814".Substring(2)), 36);
Run Code Online (Sandbox Code Playgroud)

2)

private const string CharList = "0123456789abcdefghijklmnopqrstuvwxyz";
        public static String Encode(long input)
        {
            if (input < 0) throw new ArgumentOutOfRangeException("input", input, "input cannot be negative");

            char[] clistarr = CharList.ToCharArray();
            var result = new Stack<char>();
            while (input != 0)
            {
                result.Push(clistarr[input % 36]);
                input …
Run Code Online (Sandbox Code Playgroud)

javascript c# encoding base36

5
推荐指数
1
解决办法
1万
查看次数

Python中基础36支持不均匀?

我最近一直在使用base-36,并且从未满足于将int转换为base-36字符串的通常答案.它看起来有点不平衡......

def to_base36(value):
    if not isinstance(value, int):
        raise TypeError("expected int, got %s: %r" % (value.__class__.__name__, value))

    if value == 0:
        return "0"

    if value < 0:
        sign = "-"
        value = -value
    else:
        sign = ""

    result = []

    while value:
        value, mod = divmod(value, 36)
        result.append("0123456789abcdefghijklmnopqrstuvwxyz"[mod])

    return sign + "".join(reversed(result))
Run Code Online (Sandbox Code Playgroud)

...与转换回来相比......

def from_base36(value):
    return int(value, 36)
Run Code Online (Sandbox Code Playgroud)

Python真的没有包含这个特定的电池吗?

python base36

4
推荐指数
1
解决办法
1451
查看次数

创建独特的不可猜测的基数36 id

对于类似于URL缩短器服务的应用程序,我想创建不可猜测的id,你们都熟悉我认为.这是一个这样的id的例子:

http://example.com/sd23t9

在将这些作为主键插入数据库表时,产生这些的最佳(或没有)冲突的风险是什么?

编辑:
Piskvor当然是一个很好的观点.我应该提到在达到36 ^ 6限制之前我意味着最小的碰撞风险.

编辑2
呃,废弃了,他的观点远远超过了当然.嗯.然后,或许(就像我已经在其他地方读过的那样)预先创建一个带有id的表格?当我受到36 ^ 6和非连续约束时,这可能是最有效的技术吗?

php mysql unique primary-key base36

4
推荐指数
1
解决办法
2950
查看次数

如何检查 VARCHAR 字符串是否是(不是)十六进制?

长话短说 \xc2\xa0 选择行时如何测试字符串是否为十六进制?

\n\n
\n\n

如果我有一个包含 GUID 的表,其中一些是 Base36,而不是十六进制:

\n\n
  ID | GUID\n  ===|=================================\n   1 | CAFEBABECAFED00DB16B00B515BADA55\n   2 | 0123456789ABCDEFGHIJKLMNOPQRSTUV\n   3 | DEADBEAF4D15EA5EDEFEC8EDFEE1DEAD\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要获取 GUID 不完全是十六进制的所有行。

\n\n

对于单例,我可以尝试CONVERT(VARBINARY(32),[GUID],2)看看它是否失败,但我可以在查询中\xe2\x80\x99t 进行验证。如果我可以查询WHERE isNaN(parseInt(GUID,16)),它将是故障安全的(同时必须应用于所有行)。

\n\n

当然,我可以全文搜索 F ( WHERE [GUID] LIKE \'%g%\' OR [GUID] LIKE \'%h%\' OR \xe2\x80\xa6) 之后的字母,但这种最后的方法让我提出了这个问题:

\n\n

如何仅查询(非)十六进制字段?

\n

t-sql sql-server hex string-conversion base36

4
推荐指数
1
解决办法
4453
查看次数

如何将Java long转换为*unsigned*base-X String(并返回)?

[编辑]我不接受任何涉及BigInteger或其他类似低效方法的答案.请在回答之前先阅读问题!

令人讨厌的是,Java不支持无符号数字类型.您可以使用下一个更大的类型将byte,short或int转换为unsigned,例如:

short s = -10;
int unsigned_short = s & 0xFFFF;
Run Code Online (Sandbox Code Playgroud)

但是你不能长久地做到这一点,因为没有更大的类型.

那么,如何将一个签名的long转换为"unsigned"base-X,在我的情况下是base-36,然后返回?Long类具有这些方法,但将longs视为已签名,仅仅因为它们是.

我可以使用一些操作和BigInteger来做到这一点,但BigInteger 非常慢,并通过临时BigInteger创建创建垃圾.我会做很多转换(我想).我需要一个与Long.toString(long i,int radix)的默认实现一样高效的算法.

试图调整Long.toString()的代码我来:

final int RADIX = 36;
final char[] DIGITS = { '0', ... , 'Z' };
long value = 100;
if (value == 0) {
    return "0";
} else {
    char[] buf = new char[13];
    int charPos = 12;
    long i = value;
    while (i != 0) {
        buf[charPos--] = DIGITS[Math.abs((int) (i % RADIX))];
        i /= RADIX;
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java unsigned biginteger base36

3
推荐指数
1
解决办法
6012
查看次数

在 C 中将 Base 16(十六进制)转换为 Base 36 字符串

在 C 中,将 64 个字符的十六进制数(作为字符串)转换为基数 36 字符串的有效方法是什么?

我的意思是,这是否像组合一些 GLIB2 函数(在 Linux 上)或标准库函数一样简单?或者,我必须全部定制吗?

c hex base-conversion base36

3
推荐指数
1
解决办法
2072
查看次数

如果您将Java Long转换为另一个基础,那么如何从转换为它的String中获取它?

将数字转换为不同的基数后:

String thirteenAsBase36 = Long.toString(13, 36);
Run Code Online (Sandbox Code Playgroud)

如何将String转换回正常的10号基数?

Long thirteenAsBase10 = ?
Run Code Online (Sandbox Code Playgroud)

java math numbers base36

1
推荐指数
1
解决办法
1631
查看次数