2017-04-26 1 views
-1

메신저 자바 스크립트에서 몇 가지 일을하고 따라서 10 진수로 텍스트 문자열을 변환해야합니다.자바 스크립트에서 긴 문자열을 큰 int로 변환

내가 사용하는 PHP 코드했다 :

function to_number($data) 
{ 
    $base = "256"; 
    $radix = "1"; 
    $result = "0"; 
    for($i = strlen($data) - 1; $i >= 0; $i--) 
    { 
    $digit = ord($data{$i}); 
    $part_res = bcmul($digit, $radix); 
    $result = bcadd($result, $part_res); 
    $radix = bcmul($radix, $base); 
    } 
    return $result; 
    } 

내가 자바 스크립트에서 그것을 할 필요가 있기 때문에 내가 진수로 문자열을 변환하는 시도 후 진수 문자열로 :

/// String into Hex 
function toHex(str) { 
    var hex = ''; 
    var i = 0; 
    while(str.length > i) { 
     hex += ''+str.charCodeAt(i).toString(16); 
     i++; 
    } 
    return hex; 
} 

//// Hex into Dec 

function h2d(s) { 

function add(x, y) { 
    var c = 0, r = []; 
    var x = x.split('').map(Number); 
    var y = y.split('').map(Number); 
    while(x.length || y.length) { 
     var s = (x.pop() || 0) + (y.pop() || 0) + c; 
     r.unshift(s < 10 ? s : s - 10); 
     c = s < 10 ? 0 : 1; 
    } 
    if(c) r.unshift(c); 
    return r.join(''); 
} 

var dec = '0'; 
s.split('').forEach(function(chr) { 
    var n = parseInt(chr, 16); 
    for(var t = 8; t; t >>= 1) { 
     dec = add(dec, dec); 
     if(n & t) dec = add(dec, '1'); 
    } 
}); 
return dec; 
} 

모든 잘 작동하고 PHP와 자바 스크립트 코드는 다음과 같은 정규 문자열로 피드 할 때 똑같은 결과를 반환합니다.

thisisasimplestring 
,363,210

그러나 이와 같은 입력에 공급했을 때

�ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�!µ?ŲÀ]).-PSH9Ó·ÂÞ 

또는이를 :

�ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ�yohoo 

자바 스크립트 코드의 결과는 PHP로부터 diffrent한다. 나는 php와 같은 결과가 필요하다.

아이디어가 있으십니까? 메신저 내가 다른 솔루션으로 문제를 해결하지만, 도움

+0

하드 정확히 문제가 무엇인지 이해하는 ...하지만 어쩌면 그것은 사물의 "큰 INT"측면과 관련이있다 :

내가이 글을 읽는 것이 좋습니다. JavaScript는 53 비트 정수에만 대처할 수 있습니다. 왜 유니 코드 문자가 큰 것을 필요로하는지 확신 할 수 없지만. – Whothehellisthat

+0

의견을 보내 주셔서 감사합니다. 비록 다른 해결책으로 문제를 해결했지만, 자바 스크립트가 문자를 처리하는 방식 때문에 refrence를 위해이 글을 읽을 것을 권합니다. https://mathiasbynens.be/notes/javascript-unicode – dudu

답변

0

을 찾고 있지만, 그래서 그것 때문에 자바 스크립트 (내가 필요로하는 그와 같은 자) 문자를 처리하는 방식의에 refrence,

str.charCodeAt(i) 

위해 할하지 않습니다 해당 문자에 대해 올바른 코드 포인트를 리턴하십시오. http://mathiasbynens.be/notes/javascript-unicode