1 (изменено: -red-, 2008-08-11 17:47:26)

Тема: JScript: Преобразование строки в число

Для себя решил таким способом, буду рад узнать более красивые/корректные решения.

// file .js
function DECStr2Int(sDigit){
    var iDigit=0;
    var i = sDigit.length;
    if(i <= 0) return null;
    while(i--){
//        WScript.echo(sDigit.charAt(i) +" at "+i.toString() );
        switch (sDigit.charAt(sDigit.length - i-1)){
            case "0":
                iDigit += 0*Math.pow(10,i);
                break;
            case "1":
                iDigit += 1*Math.pow(10,i);
                break;
            case "2":
                iDigit += 2*Math.pow(10,i);
                break;
            case "3":
                iDigit += 3*Math.pow(10,i);
                break;
            case "4":
                iDigit += 4*Math.pow(10,i);
                break;
            case "5":
                iDigit += 5*Math.pow(10,i);
                break;
            case "6":
                iDigit += 6*Math.pow(10,i);
                break;
            case "7":
                iDigit += 7*Math.pow(10,i);
                break;
            case "8":
                iDigit += 8*Math.pow(10,i);
                break;
            case "9":
                iDigit += 9*Math.pow(10,i);
                break;
            default:
        }
    }
    return iDigit;
}

WScript.echo( DECStr2Int("9876543210").toString() );
WScript.echo( DECStr2Int("0123456789").toString() );

2

Re: JScript: Преобразование строки в число

А чем parseInt нехорош?

parseInt Method

Returns an integer converted from a string.

parseInt(numString, [radix])

Arguments

numString  Required. A string to convert into a number.

radix  Optional. A value between 2 and 36 indicating the base of the number contained in numString. If not supplied, strings with a prefix of '0x' are considered hexadecimal and strings with a prefix of '0' are considered octal. All other strings are considered decimal.

n = parseInt("9876543210");
WScript.Echo(typeof(n) + "\n" + n);

3

Re: JScript: Преобразование строки в число

Спасибо! В справочнике не нашел этого метода :-[

4

Re: JScript: Преобразование строки в число

А чем плохо неявное преобразование?
Например:

var str="9876543210";
var num=str*1;

WSH.echo([str,typeof(str)])
WSH.echo([num,typeof(num)])

5

Re: JScript: Преобразование строки в число

А как можно преобразовать HEX строку в число?

6

Re: JScript: Преобразование строки в число

-red- пишет:

А как можно преобразовать HEX строку в число?

var n1 = parseInt( "FFFF" , 16 );
var n2 = parseInt( "0xFFF0" , 16 );
WScript.Echo( 'n1 = ' + n1 + ',  n2 = ' + n2 );

7

Re: JScript: Преобразование строки в число

Spy00000 пишет:
parseInt

Спасибо! Давно не кодил - забыл всё!

8

Re: JScript: Преобразование строки в число

Надеюсь это поможет.


И это тоже.


function binDec(v, n2){
var n=0, l;
l=v.length;
v=v.split("").reverse().join("");//вывернуть строку на изнанку
while(l--){n+=v.charAt(l)==1?Math.pow(2, l):0;};
d.getElementById("dec").value=intervalNumSp(n, n2);
 };//
//
function binHex(n){
decHex(d.getElementById("dec").value, n);
 };//
//
function hexDec(v, n){
var s=intervalNumSp(parseInt(v, 16), n);
d.getElementById("dec").value=s;
 };//
//
function hexBin(n){
decBin(d.getElementById("dec").value, n);
 };//
//
function decHex(v, n){
var s=intervalNumSp(Number(v).toString(16).toLocaleUpperCase(), n);
d.getElementById("hex").value=s;
 };//
//
function decBin(v, n){
var s=intervalNumSp(Number(v).toString(2), n);
d.getElementById("bin").value=s;
 };//
//
function intervalNumSp(n1, n2){
var n3;
n1=n1+"";//на всякий случай, делаем строку, может число пришло
n3=n1.length%n2;//получить старшую не полную часть
n2=new RegExp('([0-9A-Fa-f]{'+n2+'})', "g");
//взять первые символы, 1шт., 2шт., 3шт., а остаток разделить пробелами
n1=n1.substr(0, n3)+n1.substr(n3).replace(n2, " $1");//перед долларом прбел
return n1.replace(/^ /, "");//удалить возможный первый пробел
 };//