簡體   English   中英

如何將任意基數的字符串版本轉換為整數?

[英]How do I convert a string version of a number in an arbitrary base to an integer?

如何將字符串轉換為整數?

例如:

  • “ 5328764”,以int為基礎的10
  • “ AB3F3A”,以int為基數16

任何代碼都會有所幫助

假設任意基數(不是16、10、8、2):

在C(C ++)中,使用strtol

return strtol("AB3F3A", NULL, 16);

在Javascript中,使用parseInt

return parseInt("AB3F3A", 16);

在Python中,使用int(string, base)

return int("AB3F3A", 16)

在Java中,使用Integer.parseInt (感謝Michael。)

return Integer.parseInt("AB3F3A", 16);

在PHP中,使用base_convert

return intval(base_convert('AB3F3A', 16, 10));

在Ruby中,使用to_i

"AB3F3A".to_i(16)

在C#中,自己編寫一個。

9999實際上是9000 + 900 + 90 + 9因此,從字符串的右側開始,然后一次選取一個數字。 每個字符號都有一個ASCII碼,可以將其轉換為數字並乘以適當的數量。

在C#中,我認為它是:Convert.ToInt64(value,base)並且基數必須為2、8、10或16

Java中的兩個函數,雙向:“ code”參數代表數值系統:“ 01”表示基數2,“ 0123456789”表示基數10,“ 0123456789abcdef”表示十六進制,依此類推...

public String convert(long num, String code) {
    final int base = code.length();
    String text = "";
    while (num > 0) {
        text = code.charAt((int) (num%base)) + text;
        num /= base;
    }
    return text;
}

public long toLong(String text, String code) {
    final long base = code.length();
    long num = 0;
    long pow = 1;
    int len = text.length();
    for(int i = 0; i < len; i++) {
        num += code.indexOf(text.charAt(len - i - 1)) * pow;
        pow *= base;
    }
    return num;
}

println(convert(9223372036854775807L,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"));
println(convert(9223372036854775807L,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=-+*/^%$#&()!?.,:;[]"));
println(toLong("Ns8T$87=uh","0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=-+*/^%$#&()!?.,:;[]"));```

在您的示例中:

toLong("5328764", "0123456789") = 5328764
toLong("AB3F3A", "0123456789ABCDEF") = 11222842

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM