ජාවාස්ක්‍රිප්ට් හි දශම හෙක්සැඩිසිමල් බවට පරිවර්තනය කරන්නේ කෙසේද


1495

ජාවාස්ක්‍රිප්ට් හි දශම අගයන් ඒවායේ ෂඩාස්රාකාර අගයට පරිවර්තනය කරන්නේ කෙසේද?


7
මෙහි අනතුරු ඇඟවීමක් වන්නේ ඔබ නූල් නිරූපණයකින් ආරම්භ කරන අතර එය හෙක්ස් බවට පරිවර්තනය කිරීමේ කොටසක් ලෙස ඔබ එය අංකයක් බවට හරවන විට නිරවද්‍යතාවය නැති කර ගැනීම ඉතා පහසුය. Danvk.org/wp/2012-01-20/… බලන්න .
studgeek

1
මෙම ක්‍රියාව ඔබට අවශ්‍ය දේමයි
මොහොමඩ් මුසාවි

Answers:


2503

අංකයක් ෂඩාස්රාකාර නූලකට පරිවර්තනය කරන්න:

hexString = yourNumber.toString(16);

සහ ක්‍රියාවලිය ආපසු හරවන්න:

yourNumber = parseInt(hexString, 16);

45
yourNum යනු මෙම නඩුවේ හෙක්ස් නූලකි. උදා (255) .toString (16) == 'ff' && parseInt ('ff', 16) == 255
Prestaul

8
stforste, ඔබ ජාවාස්ක්‍රිප්ට් අංකයක් (එය අංක වස්තුවක් වන අතර එය ඊසීඑම්ඒ ස්ක්‍රිප්ටයේ ද්විත්ව වේ) හෙක්ස් බවට හරවා ආපසු මෙම තාක්ෂණය භාවිතා කළහොත් ඔබ “නිරවද්‍යතාව ලිහිල් නොකරනු ඇත”. ඔබ සම්බන්ධ කළ ප්‍රශ්නය ද්විත්වයකට ගැළපෙන තරම් විශාල සංඛ්‍යාවක් යොමු කරයි (එම නිසා ප්‍රශ්නයේ නූල් නිරූපණය). ඔබට අංකයක් තිබේ නම් මෙය ක්‍රියාත්මක වේ. ඔබට ජාවාස්ක්‍රිප්ට් අංක වස්තුවක් (ද්විත්ව) වීමට තරම් විශාල දෙයක් තිබේ නම් ඔබට වෙනත් දෙයක් සොයා ගැනීමට සිදුවේ.
ප්‍රෙස්ටෝල්

12
E ඩෙරෙක්, මට මානසික ප්‍රශ්නයක් ඇති අතර එය අනවශ්‍ය වරහන් වර්‍ග ඉවසා සිටීමට මට ඉඩ නොදේ ... else අනෙක් සියල්ලන්ම yourNumberවිචල්‍යයකි. ඔබට සංඛ්‍යාත්මක වචනාර්ථයක් භාවිතා කිරීමට අවශ්‍ය නම් ඔබට එවැනි දෙයක් කිරීමට සිදුවේ (45).toString(16), නමුත් ඔබ අංකයක් තදින් කේත කරන්නේ නම් කරුණාකර එය හෙක්ස් නූලක් ලෙස ලියන්න ... (45).toString(16)සෑම විටම සමාන වනු ඇත '2d', එබැවින් cpu නාස්ති නොකරන්න එය වටහා ගැනීමට චක්‍ර.
ප්‍රෙස්ටෝල්

21
Rest ප්‍රෙස්ටෝල් "එය හඳුනා ගැනීමට cpu චක්‍ර නාස්ති නොකරන්න" - එය නොමේරූ ප්‍රශස්තිකරණය ලෙස හැඳින්වේ. ජාවාස්ක්‍රිප්ට් 286 මත ධාවනය නොවන්නේ නම්, පොදු කාරණා ගැන මට සැකයි. තවද, '45' යනු මැජික් අංකයක් විය හැකි අතර එය ක්‍රමලේඛකයාට හඳුනාගත හැකි විය යුතුය (තත්පර වලින් කල් ඉකුත් වීමේ කාලය වැනි), නමුත් '2 ඩී', එය හඳුනා ගැනීමට යන්නේ කවුද?
ඩෙජේ ක්ලේටන්

49
ඔබ වරහන් වලට අකමැති නම්, ඔබට අමතර තිතක් භාවිතා කළ හැකිය:42..toString(16)
තෝමස් වොට්සන්

143

ඔබට බිට් ක්ෂේත්‍ර හෝ බිට් 32 වර්ණ වැනි දෑ හැසිරවීමට අවශ්‍ය නම්, ඔබ අත්සන් කළ අංක සමඟ කටයුතු කළ යුතුය. ජාවාස්ක්‍රිප්ට් ශ්‍රිතය toString(16)සාමාන්‍යයෙන් ඔබට අවශ්‍ය නොවන negative ණ ෂඩාස්රාකාර සංඛ්‍යාවක් ලබා දෙනු ඇත. මෙම ශ්‍රිතය ධනාත්මක සංඛ්‍යාවක් බවට පත් කිරීම සඳහා පිස්සු එකතු කිරීමක් කරයි.

function decimalToHexString(number)
{
  if (number < 0)
  {
    number = 0xFFFFFFFF + number + 1;
  }

  return number.toString(16).toUpperCase();
}

console.log(decimalToHexString(27));
console.log(decimalToHexString(48.6));


5
ඒ දෙදෙනාගේ අනුපූරකයද?
ජූලියන්

2
ජාවාස්ක්‍රිප්ට් හට බිට් 32 බිට් ක්ෂේත්‍ර සියල්ලම අත්සන් නොකළ අංක ලෙස නිරූපණය කළ හැකි බැවින් මෙම පරිවර්තනය සාමාන්‍යයෙන් අවශ්‍ය නොවේ (අංකය බලන්න. MAX_SAFE_INTEGER). අත්සන් නොකල බවට පරිවර්තනය කිරීම එකම හේතුව නිසා මෙසේ ලිවිය හැකිය:number = 0x100000000 + number;
ජොහැන්නස් මැටොකික්

3
මගේ පෙර අදහස් දැක්වීම පිළිබඳ කෙටි සටහනක්: හෙක්ස් නිරූපණය අංක දක්වා අංක සඳහා ක්‍රියා කළ යුතු අතර MAX_SAFE_INTEGER මෙය බිට්වේස් මෙහෙයුම් සඳහා නොගැලපේ (ඒවා බොහෝ විට බිට් 32 වර්ණ නිර්මාණය කිරීමට භාවිතා කරයි). බිට්වේස් මෙහෙයුම්වල ප්‍රති result ලය සැමවිටම අත්සන් කළ 32-බිටු නිඛිලයකි. එබැවින් බිට්වේස් ප්‍රති results ල> = 2 ^ 31 negative ණ වන අතර 0x100000000 | 0 === 0.
ජොහැන්නස් මැටොකික්

26
ඔබට භාවිතා කල හැකි >>>නිලකුණු නියෝජනය උදා කිරීමට ආගමට හරවා ගණන ක්රියාකරු ((-3253) >>> 0).toString(16)ප්රතිලාභ "fffff34b".
csharpfolk

1
+1ප්‍රයෝජනවත් එකතු කිරීමක් සඳහා, නමුත් ඔබ සංඛ්‍යා වෙනත් අංකනයකට පරිවර්තනය කරන්නේ නම්, සියලු සංඛ්‍යා දැනටමත් "සාමාන්‍යයෙන්" ධනාත්මක වේ, නැතිනම් ඔබට negative ණාත්මක ප්‍රති .ල අවශ්‍ය වේ.
කාල් ස්මිත්

83

පහත කේතය දශම අගය d ෂඩාස්රාකාර බවට පරිවර්තනය කරයි. ෂඩාස්රාකාර ප්‍රති .ලයට පෑඩින් එකතු කිරීමට ද එය ඔබට ඉඩ සලසයි. එබැවින් 0 පෙරනිමියෙන් 00 බවට පත්වේ.

function decimalToHex(d, padding) {
    var hex = Number(d).toString(16);
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

    while (hex.length < padding) {
        hex = "0" + hex;
    }

    return hex;
}

5
මෙය නිෂේධාත්මක අගයන් නිසි ලෙස හසුරුවන්නේ නැත. decimalToHex (-6, 4) නැවත 00-6 ක් වනු ඇත.
ජෝන්එම්ආර්

3
එය පාවෙන ගැටළු ද ඇත, නමුත් Math.round () දැමීමෙන් එය නිවැරදි කර ඇත. (+ 1ed)
මයිකල් - කොහෙද මැටි ෂිර්කි

මම අරාවකින් ('255,0,55', ආදිය) අංක "අදින්නෙමි" සහ .toString (16) ක්‍රියා නොකරයි. මට ලැබුණේ එකම සංඛ්‍යා පමණි! මම ඉදිරිපස "අංකය" ශ්‍රිතය එක් කළ අතර දැන් එය ක්‍රියාත්මක වේ! විසඳුම සෙවීමට උත්සාහ කළේ පැය හතරක් පමණයි !!
ක්‍රිස්ටෝෆයර්

65
function toHex(d) {
    return  ("0"+(Number(d).toString(16))).slice(-2).toUpperCase()
}

1
function hexRep(number, width) { return (number+Math.pow(16, precision)).toString(16).slice(-width); }
ලෝරි

2
එය දිගු කිරීම එතරම් අපහසු නැත, ඔබ එහි අවසාන ඉලක්කම් .slice (-number) සමඟ කපා දමයි. ඔබ ඉදිරිපසින් තවත් ශුන්‍ය එකතු කළහොත් එය හොඳින් ක්‍රියාත්මක වේ.
ටැටරීස් කරන්න

20
ES6 const hex = d => Number(d).toString(16).padStart(2, '0')😁
Ninh Pham

39

සම්පූර්ණත්වය සඳහා, negative ණ සංඛ්‍යාවක දෙකේ අනුපූරක ෂඩාස්රාකාර නිරූපණය ඔබට අවශ්‍ය නම් , ඔබට එය භාවිතා කළ හැකිය ශුන්‍ය පිරවුම්-දකුණ මාරුව >>>ක්‍රියාකරු . උදාහරණයක් වශයෙන්:

> (-1).toString(16)
"-1"

> ((-2)>>>0).toString(16)
"fffffffe"

කෙසේ වෙතත් එක් සීමාවක් තිබේ: ජාවාස්ක්‍රිප්ට් බිට්වේස් ක්‍රියාකරුවන් ඔවුන්ගේ ක්‍රියාකාරිත්වය බිටු 32 ක අනුක්‍රමයක් ලෙස සලකයි , එනම් ඔබට බිටු 32 ක අනුපූරකය ලැබේ.


2
මෙම ප්‍රශ්නයට වඩාත්ම වටිනාම පිළිතුර මෙයයි :)
ඇල්බට්ජන්

විවිධ ප්‍රති C# number to hexadecimalresults ල ලබා දෙන නිසා සියලු ප්‍රශ්න හාරමින් Javascript number to hexadecimal. ජාවාස්ක්‍රිප්ට් හි negative ණ සංඛ්‍යා සමඟ ගැටළුවක් ඇති බව පෙනේ. මෙම පිළිතුර ගැටලුවට විසඳුම බව පෙනේ.
goamn

මෙය විශාල වශයෙන් උපකාරී විය, ස්තූතියි! මම මෙය RGB වර්ණ සඳහා භාවිතා කළෙමි, එබැවින් බිට් 24 ප්‍රභේදය ලබා ගැනීම සඳහා, පළමු අක්ෂර දෙකේ ((-2)>>>0).toString(16).substring(2)
කැබැල්ල


19

ලූපය නොමැතිව:

function decimalToHex(d) {
  var hex = Number(d).toString(16);
  hex = "000000".substr(0, 6 - hex.length) + hex;
  return hex;
}

// Or "#000000".substr(0, 7 - hex.length) + hex;
// Or whatever
// *Thanks to MSDN

ඇගයීමට ලක් කළ යුතු ලූප් පරීක්ෂණ භාවිතා නොකිරීම වඩා හොඳ නොවේ ද?

උදාහරණයක් ලෙස, ඒ වෙනුවට:

for (var i = 0; i < hex.length; i++){}

ඇත

for (var i = 0, var j = hex.length; i < j; i++){}

19

RGB- අගය-සිට-ෂඩාස්රාකාර ශ්‍රිතයක් සඳහා මෙම හොඳ අදහස් කිහිපයක් ඒකාබද්ධ කිරීම ( #HTML / CSS සඳහා වෙනත් තැනක් එක් කරන්න ):

function rgb2hex(r,g,b) {
    if (g !== undefined)
        return Number(0x1000000 + r*0x10000 + g*0x100 + b).toString(16).substring(1);
    else
        return Number(0x1000000 + r[0]*0x10000 + r[1]*0x100 + r[2]).toString(16).substring(1);
}

මේ සඳහා ස්තූතියි! බොහෝ කලකට පෙර අදහස් දැක්වීමක් කිරීමට මම අදහස් කරමි. එය මගේ පිළිතුර සඳහා යතුර විය. stackoverflow.com/questions/5560248/…
Pimp Trizkit

17

පිළිගත් පිළිතුර තනි ඉලක්කම් ආපසු ලබා දුන් ෂඩාස්රාකාර කේත සැලකිල්ලට නොගත්තේය. මෙය පහසුවෙන් සකස් කළ හැක්කේ:

function numHex(s)
{
    var a = s.toString(16);
    if ((a.length % 2) > 0) {
        a = "0" + a;
    }
    return a;
}

සහ

function strHex(s)
{
    var a = "";
    for (var i=0; i<s.length; i++) {
        a = a + numHex(s.charCodeAt(i));
    }

    return a;
}

ඉහත පිළිතුරු වෙනත් ආකාරයකින් එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් පළ කර ඇති බව මම විශ්වාස කරමි. මම මේවා toHex () ශ්‍රිතයක් තුළට ඔතා ඇත:

function toHex(s)
{
    var re = new RegExp(/^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$/);

    if (re.test(s)) {
        return '#' + strHex( s.toString());
    }
    else {
        return 'A' + strHex(s);
    }
}

ඔබේ වෙබ් යෙදුම්වල කාර්යක්ෂමතාව වැඩි දියුණු කිරීම සඳහා සංඛ්‍යාත්මක නිත්‍ය ප්‍රකාශනය 10+ ප්‍රයෝජනවත් ජාවාස්ක්‍රිප්ට් නිත්‍ය ප්‍රකාශන කාර්යයන් වෙතින් පැමිණි බව සලකන්න. .

යාවත්කාලීන කිරීම: මෙම කාරණය කිහිප වතාවක් පරීක්‍ෂා කිරීමෙන් පසු මට දෝෂයක් හමු විය (RegExp හි ද්විත්ව උපුටා දැක්වීම්), එබැවින් මම එය නිවැරදි කළෙමි. කෙසේවෙතත්! තරමක් පරික්ෂා කිරීමෙන් පසුව සහ අල්මාස් විසින් ලිපිය කියවීමෙන් පසුව - මට වැඩ කිරීමට negative ණ සංඛ්‍යා ලබා ගත නොහැකි බව මට වැටහුණි.

තව දුරටත් - මම මේ පිළිබඳව යම් කියවීමක් කළ අතර සියලු ජාවාස්ක්‍රිප්ට් අංක 64 බිට් වචන 64 ක් ලෙස ගබඩා කර ඇති හෙයින් කුමක් වුවත් - බිට් 64 වචනය ලබා ගැනීම සඳහා මම අංකහෙක්ස් කේතය වෙනස් කිරීමට උත්සාහ කළෙමි. නමුත් ඔබට එය කළ නොහැකි බව පෙනේ. ඔබ "3.14159265" අංකයක් ලෙස විචල්‍යයකට දැමුවහොත් - ඔබට ලබා ගත හැක්කේ "3" පමණි, මන්දයත් භාගික කොටස ප්‍රවේශ විය හැක්කේ සංඛ්‍යා දහයෙන් ගුණ කිරීමෙන් පමණි (IE: 10.0) නැවත නැවත. හෝ වෙනත් අයුරකින් කිරීමට - ෂඩ් දශම 0xF වටිනාකම ද හේතු ඉපිලුම් ලක්ෂ්ය අගය යනු පරිවර්තනය කිරීම පූර්ණ සංඛ්යාමය එය කාලය පිටුපස සියල්ල ඉවත් කරන ANDed පෙර. සමස්තයක් ලෙස අගය ගැනීම වෙනුවට (එනම්: 3.14159265) සහ 0xF අගයට සාපේක්ෂව පාවෙන ලක්ෂ්‍ය අගය ANDing කිරීම.

එබැවින් කළ හැකි හොඳම දෙය නම්, මේ අවස්ථාවේ දී, 3.14159265 නූලක් බවට පරිවර්තනය කර නූල් පරිවර්තනය කිරීමයි. ඉහත නිසා, negative ණ සංඛ්‍යා පරිවර්තනය කිරීමද පහසු කරයි, මන්ද the ණ ලකුණ අගයේ ඉදිරිපස 0x26 බවට පත්වේ.

ඉතින් මම කළේ විචල්‍යයේ අංකයක් ඇති බව තීරණය කිරීමයි - එය නූලකට පරිවර්තනය කර නූල පරිවර්තනය කරන්න. මෙයින් අදහස් කරන්නේ සේවාදායකයාගේ පැත්තේ ඔබට එන නූල ඉවත් කිරීමට අවශ්‍ය වන අතර ඉන් පසුව ලැබෙන තොරතුරු සංඛ්‍යාත්මක බව තීරණය කිරීමයි. අංකවල ඉදිරිපසට "#" සහ නැවත එන අක්ෂර මාලාවක ඉදිරිපස "A" එකතු කිරීමෙන් ඔබට එය පහසුවෙන් කළ හැකිය. ToHex () ශ්‍රිතය බලන්න.

විනෝද වන්න!

තවත් වසරක් සහ බොහෝ සිතුවිලි වලින් පසුව, "toHex" ශ්‍රිතය (සහ මට "fromHex" ශ්‍රිතයක්ද ඇත) සැබවින්ම නවීකරණය කිරීමට අවශ්‍ය බව මම තීරණය කළෙමි. සමස්ත ප්‍රශ්නය වූයේ "මෙය වඩාත් කාර්යක්ෂමව කරන්නේ කෙසේද?" ෂඩාස්රාකාර ශ්‍රිතයක් සිට / දක්වා යම් දෙයක් භාගික කොටසක් දැයි සැලකිලිමත් නොවිය යුතු බව මම තීරණය කළෙමි.

ඉතින් ප්‍රශ්නය වූයේ, "ඔබ ෂඩාස්රාකාර නූලක් සමඟ වැඩ කරන බව ඔබ දන්නේ කෙසේද?". පිළිතුර සරල ය. ලොව පුරා දැනටමත් හඳුනාගෙන ඇති සම්මත පෙර-තොරතුරු භාවිතා කරන්න.

වෙනත් වචන වලින් කිවහොත් - "0x" භාවිතා කරන්න. ඉතින් දැන් මගේ toHex ශ්‍රිතය පෙනෙන්නේ එය දැනටමත් තිබේද යන්න සහ එය තිබේ නම් - එය එයට යවන ලද නූල යවයි. එසේ නොමැති නම්, එය නූල්, අංකය, ඕනෑම දෙයක් පරිවර්තනය කරයි. සංශෝධිත toHex ශ්‍රිතය මෙන්න:

/////////////////////////////////////////////////////////////////////////////
//  toHex().  Convert an ASCII string to hexadecimal.
/////////////////////////////////////////////////////////////////////////////
toHex(s)
{
    if (s.substr(0,2).toLowerCase() == "0x") {
        return s;
    }

    var l = "0123456789ABCDEF";
    var o = "";

    if (typeof s != "string") {
        s = s.toString();
    }
    for (var i=0; i<s.length; i++) {
        var c = s.charCodeAt(i);

        o = o + l.substr((c>>4),1) + l.substr((c & 0x0f),1);
    }

    return "0x" + o;
}

මෙය ඉතා වේගවත් ශ්‍රිතයක් වන අතර එය තනි ඉලක්කම්, පාවෙන ලක්ෂ්‍ය අංක සහ පුද්ගලයා නැවත හෙක්ස් කිරීම සඳහා හෙක්ස් අගයක් යවන්නේ දැයි බැලීමට පවා පරීක්ෂා කරයි. එය භාවිතා කරන්නේ ශ්‍රිත ඇමතුම් හතරක් පමණක් වන අතර ඒවායින් දෙකක් පමණක් ලූපයේ ඇත. ඔබ භාවිතා කරන අගයන් ඉවත් කිරීමට:

/////////////////////////////////////////////////////////////////////////////
//  fromHex().  Convert a hex string to ASCII text.
/////////////////////////////////////////////////////////////////////////////
fromHex(s)
{
    var start = 0;
    var o = "";

    if (s.substr(0,2).toLowerCase() == "0x") {
        start = 2;
    }

    if (typeof s != "string") {
        s = s.toString();
    }
    for (var i=start; i<s.length; i+=2) {
        var c = s.substr(i, 2);

        o = o + String.fromCharCode(parseInt(c, 16));
    }

    return o;
}

ToHex () ශ්‍රිතය මෙන්, fromHex () ශ්‍රිතය මුලින්ම "0x" සොයන අතර එය දැනටමත් එන නූලක් නොවේ නම් එය පැමිණෙන තොරතුරු නූලකට පරිවර්තනය කරයි. එය නූලක් නොවන්නේ කෙසේදැයි මම නොදනිමි - නමුත් එසේ නම් - මම පරීක්ෂා කරමි. ශ්‍රිතය පසුව අක්ෂර දෙකක් අල්ලා ASCII අක්ෂර වලට පරිවර්තනය කරයි. ඔබට එය යුනිකෝඩ් පරිවර්තනය කිරීමට අවශ්‍ය නම්, ඔබට වරකට අක්ෂර හතරක් (4) කින් ලූපය වෙනස් කළ යුතුය. නමුත් ඔබ ද නූල් හතරකින් බෙදිය නොහැකි බවට සහතික විය යුතුය. එය එසේ නම් - එය සම්මත ෂඩාස්රාකාර නූලකි. (මතක තබා ගන්න නූල් වල ඉදිරිපස "0x" ඇත.)

-3.14159265, නූලකට පරිවර්තනය කළ විට, එය -3.14159265 බව පෙන්වීමට සරල පරීක්ෂණ පිටපතක්.

<?php

    echo <<<EOD
<html>
    <head><title>Test</title>
        <script>
            var a = -3.14159265;
            alert( "A = " + a );
            var b = a.toString();
            alert( "B = " + b );
        </script>
    </head>
    <body>
    </body>
</html>
EOD;

?>

ToString () ශ්‍රිතයට අදාළව ජාවාස්ක්‍රිප්ට් ක්‍රියා කරන ආකාරය නිසා, මීට පෙර ගැටළු ඇති කළ එම සියලු ගැටලු ඉවත් කළ හැකිය. දැන් සියලු නූල් සහ අංක පහසුවෙන් පරිවර්තනය කළ හැකිය. තවද, වස්තූන් වැනි දෑ ජාවාස්ක්‍රිප්ට් විසින්ම දෝෂයක් ජනනය කිරීමට හේතු වේ. මම විශ්වාස කරනවා මේක ලැබෙන තරමට හොඳයි කියලා. ජාවාස්ක්‍රිප්ට් හි toHex () සහ fromHex () ශ්‍රිතයක් ඇතුළත් කිරීම W3C සඳහා ඉතිරිව ඇති එකම දියුණුවයි.


මම හිතන්නේ ඔබට තවමත් මෙහි වැඩ කිරීමට ඇති ... if( s.substr(0,2)මීට පෙර if (typeof s != "string")ඔබට අවශ්‍ය දේ නොවේ. මා ආපසු පැමිණියේ මා බලාපොරොත්තු වූ දෙය නොවේ ( toHex(0x1f635)ලබා දෙයි "0x313238353635"). වැඩිදුර විමර්ශනය කර නැත.
රෆින්

මම විශ්වාස කරනවා ඔයා වැරදියි කියලා. ඔබේ උදාහරණය හෙක්ස් නූලක් භාවිතා කරන අතර එය නූලක් නොවේ - නමුත් අංකයකි. එබැවින් 1f635 එය එලියට එනු ඇත. ඔබ "0x1f635" දමා තිබුනේ නම් එය වෙනස් ආකාරයකින් එළියට එනු ඇත. (එනම්: පුරුද්දට ඔබ යවා ඇති හෙක්ස් අංකය නැවත ලබා දෙනු ඇත.) :-)
මාර්ක් මැනින්

පළමු කරුණ නම් ඔබ භාවිතා කරන නොහැකි විය substrසහ toLowerCaseඑම නිසා එක්කෝ-string නොවන මත ... typeofඅවශ්යතා ඉක්මනින් එන්න, හෝ, ඔබ අපේක්ෂා නම් toHexඑතනම-string නොවන මත විසි කිරීමට, ඔබ ඉවත් කළ යුතුය typeofසම්පූර්ණයෙන්ම පරීක්ෂා කරන්න. තේරුමක් තිබේද? එනම්, මම මෙහි සංස්කරණයකින් තොරව කේතය භාවිතා කර ඇමතුමක් ගත්තොත් toHex(0x1f635), මට ලැබෙනු Uncaught TypeError: s.substr is not a functionඇත. මම කලින් වාත්තු වාත්තු කළහොත්, ඔබ හරි, සංඛ්‍යාව පළමුව දශමයට යයි, සමහර විට, දේවල් පැත්තකට යයි. ඇත්ත වශයෙන්ම එයින් අදහස් කරන්නේ sනූලක් නොවේ නම් ඔබට මෙහි සරල වාත්තු කිරීමක් කළ නොහැකි බවයි.
රෆින්

ඇත්ත වශයෙන්ම, එක්ස්පී යටතේ මෙය හොඳින් ක්‍රියාත්මක වේ. ජාවාස්ක්‍රිප්ට් යාවත්කාලීන කිරීම් ගණනාවක් ඇති අතර එමඟින් ජාවාස්ක්‍රිප්ට් යතුරු ලියනය බවට පත් වේ. එය ව්‍යතිරේකයක් වනු ඇත. එක්ස්පී යටතේ එය ජුස්ර් ක්‍රියා කරයි. අවම වශයෙන් මට. යතුරු ලියන ලෝකයක - "if (typeof s ==" string "&& s.substr (0,2) ==" 0x ") {return s;}" දැමීම සුදුසුය. නමුත් ox1f635 තවමත් නූලක් නොවේ. :-)
මාර්ක් මැනින්

13

උනන්දුවක් දක්වන ඕනෑම කෙනෙකුට, මෙම ප්‍රශ්නයට ලබා දී ඇති පිළිතුරු බොහොමයක් සංසන්දනය කරන JSFiddle මෙන්න .

මෙන්න මම අවසන් කළ ක්‍රමය මෙන්න:

function decToHex(dec) {
  return (dec + Math.pow(16, 6)).toString(16).substr(-6)
}

වර්ණ දත්ත වර්ගයක් ලෙස CSS භාවිතා කිරීම සඳහා ඔබ දශමයේ සිට හෙක්ස් බවට පරිවර්තනය කිරීමට බලාපොරොත්තු වන්නේ නම් , ඒ වෙනුවට ඔබ RGB අගයන් දශමයෙන් උපුටා ගෙන rgb () භාවිතා කිරීමට කැමති බව මතක තබා ගන්න. .

උදාහරණයක් ලෙස ( JSFiddle ):

let c = 4210330 // your color in decimal format
let rgb = [(c & 0xff0000) >> 16,  (c & 0x00ff00) >> 8,  (c & 0x0000ff)]

// Vanilla JS:
document..getElementById('some-element').style.color = 'rgb(' + rgb + ')'
// jQuery:
$('#some-element').css('color', 'rgb(' + rgb + ')')

මෙය #some-elementCSS colorදේපල සකසයි rgb(64, 62, 154).


12
var number = 3200;
var hexString = number.toString(16);

16 යනු රේඩික්ස් වන අතර ෂඩාස්රාකාර අංකයක අගයන් 16 ක් ඇත :-)


11

මෙන්න කැපූ ECMAScript 6 අනුවාදය:

const convert = {
  bin2dec : s => parseInt(s, 2).toString(10),
  bin2hex : s => parseInt(s, 2).toString(16),
  dec2bin : s => parseInt(s, 10).toString(2),
  dec2hex : s => parseInt(s, 10).toString(16),
  hex2bin : s => parseInt(s, 16).toString(2),
  hex2dec : s => parseInt(s, 16).toString(10)
};

convert.bin2dec('111'); // '7'
convert.dec2hex('42');  // '2a'
convert.hex2bin('f8');  // '11111000'
convert.dec2bin('22');  // '10110'

Y හයිපර්සොෆ්ට් සිස්ටම්ස් සමඟ දැඩි එකඟ නොවීමකදී, ඔබේ පරිසරය හෝ තත්වය ඔබට ගැලපෙන්නේ නම්, ඊඑස් 6 භාවිතා කරන්න. සෑම ස්ක්‍රිප්ට් එකක්ම පැරණි බූට්ලෙග් පරිවර්තකයන් තුළ ක්‍රියාත්මක වීමට අවශ්‍ය නොවේ, එසේම බාබෙල් පවතින්නේ හේතුවක් නිසාය. අවසාන වශයෙන්, ES6 ඔබ එය දන්නේ නම් වඩාත් පැහැදිලි ය. සම්මත JS පිළිතුරු ලබා දීමෙන් වැඩි පිරිසකට උපකාර කළ හැකි නමුත් පැරණි JS අනුවාද සඳහා වෙනත් පිළිතුරු ඇති බව සලකා බැලීමේදී ES6 පිළිතුරක් තිබීම පමණක් ප්‍රයෝජනවත් වේ, “මම මේ දවසේ එය කළේ එලෙසය” යන රැන්ට් අනිවාර්යයෙන්ම අවශ්‍ය නොවේ.
WiR3D

මතධාරීන් කරුණු ඉදිරිපත් නොකරයි, එබැවින් ඔබේ "තර්කය" අවලංගුය. @ WiR3D
හයිපර්සොෆ්ට් පද්ධති

Y හයිපර්සොෆ්ට් සිස්ටම්ස් එය ඔබගේ මෙන්ම වලංගු නොවේ, මන්ද එය ඔබගේ මතය මෙන්ම බොහෝ නවීන යෙදුම් වල වලංගු නොවන සන්දර්භයකට සන්දර්භය සීමා කරයි.
WiR3D

පරිශීලක දෝෂය: "අදහස් කළ ආකාරයටම", "බොහෝ විට" සහ "බොහෝ".
හයිපර්සොෆ්ට් පද්ධති

10

අක්ෂර ගණනකට සීමා / පෑඩ්:

function decimalToHex(decimal, chars) {
    return (decimal + Math.pow(16, chars)).toString(16).slice(-chars).toUpperCase();
}

2
මෙය සංඛ්‍යාවක් නූල් හෙක්ස් සහ පෑඩ් ප්‍රමුඛ ශුන්‍ය බවට පරිවර්තනය කරයි, මෙය ලස්සනයි!
ගෝර්ඩන්

9
function dec2hex(i)
{
  var result = "0000";
  if      (i >= 0    && i <= 15)    { result = "000" + i.toString(16); }
  else if (i >= 16   && i <= 255)   { result = "00"  + i.toString(16); }
  else if (i >= 256  && i <= 4095)  { result = "0"   + i.toString(16); }
  else if (i >= 4096 && i <= 65535) { result =         i.toString(16); }
  return result
}

1
+1 ස්තූතියි! CSS සමඟ වැඩ කරන විට, toString (16) වැදගත් වන බැවින් ඔබට FF0000
Tyler Egeto

7
css (හෝ svg, css- විලාසිතාවේ වර්ණ පිරිවිතරයන් පිළිගන්නා) සමඟ වැඩ කරන විට color: rgb(r,g,b)rg සහ b දශම සංඛ්‍යා වන තැන ලිවීමෙන් ඔබට මුළු ප්‍රශ්නයම මඟ හැරිය හැක .
දැඩි

1
විය යුත්තේ:function decimalToHexString(i) { var result = "00"; if (i >= 0 && i <= 15) { result += "000" + i.toString(16); } else if (i >= 16 && i <= 255) { result += "00" + i.toString(16); } else if (i >= 256 && i <= 4095) { result += "0" + i.toString(16); } else if (i >= 4096 && i <= 65535) { result += i.toString(16); } return result }
Aykut Çevik

9

ඔබට RGBA වර්ණ අගයක ෂඩාස්රාකාර නිරූපණයක් බවට අංකයක් පරිවර්තනය කිරීමට අවශ්‍ය නම්, මෙය මෙතැන් සිට ඉඟි කිහිපයක වඩාත්ම ප්‍රයෝජනවත් සංයෝජනය බව මට පෙනී ගියේය:

function toHexString(n) {
    if(n < 0) {
        n = 0xFFFFFFFF + n + 1;
    }
    return "0x" + ("00000000" + n.toString(16).toUpperCase()).substr(-8);
}

8

AFAIK අදහස් 57807 වැරදියි, එය එසේ විය යුතුය: var hex = අංකය ()) .toString (16); වෙනුවට var hex = parseInt (ඈ, 16);

function decimalToHex(d, padding) {
    var hex = Number(d).toString(16);
    padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

    while (hex.length < padding) {
        hex = "0" + hex;
    }

    return hex;
}

6

අංකය negative ණ නම්?

මෙන්න මගේ අනුවාදය.

function hexdec (hex_string) {
    hex_string=((hex_string.charAt(1)!='X' && hex_string.charAt(1)!='x')?hex_string='0X'+hex_string : hex_string);
    hex_string=(hex_string.charAt(2)<8 ? hex_string =hex_string-0x00000000 : hex_string=hex_string-0xFFFFFFFF-1);
    return parseInt(hex_string, 10);
}

5

මම සෑහෙන විශාල ලූපයකින් හෙක්ස් නූල් බවට පරිවර්තනය කරමි, එබැවින් වේගවත්ම එක සොයා ගැනීම සඳහා මම ක්‍රම කිහිපයක් උත්සාහ කළෙමි. මගේ අවශ්‍යතාවයන් වූයේ ස්ථාවර දිග නූලක් තිබීම සහ negative ණ අගයන් නිසි ලෙස කේතනය කිරීමයි (-1 => ff..f).

.toString(16)නිසියාකාරව කේතනය කිරීමට මට negative ණාත්මක අගයන් අවශ්‍ය බැවින් සරල මට වැඩ කළේ නැත. පහත කේතය මම බයිට් 1-2 අගයන් මත මෙතෙක් අත්හදා බැලූ වේගවත්ම වේ ( symbolsඔබට ලබා ගැනීමට අවශ්‍ය ප්‍රතිදාන සංකේත ගණන නිර්වචනය කරන බව සලකන්න , එනම් බයිට් 4 ක පූර්ණ සංඛ්‍යාවක් සඳහා එය 8 ට සමාන විය යුතුය):

var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
function getHexRepresentation(num, symbols) {
    var result = '';
    while (symbols--) {
        result = hex[num & 0xF] + result;
        num >>= 4;
    }
    return result;
}

එය .toString(16)බයිට් 1-2 සංඛ්‍යාවට වඩා වේගවත් වන අතර විශාල සංඛ්‍යා මත මන්දගාමී වේ (විට symbols> = 6), නමුත් තවමත් negative ණ අගයන් නිසි ලෙස සංකේතවත් කරන ක්‍රම ඉක්මවා යා යුතුය.


5

පිළිගත් පිළිතුරෙහි දැක්වෙන පරිදි, දශමයේ සිට ෂඩාස්රාකාර බවට පරිවර්තනය වීමට ඇති පහසුම ක්‍රමය වේ var hex = dec.toString(16). කෙසේ වෙතත්, ඔබ නූල් පරිවර්තනයක් එක් කිරීමට කැමති විය හැකිය, මන්දයත් වැනි නූල් නිරූපණයන් "12".toString(16)නිවැරදිව ක්‍රියා කරන බව සහතික කරයි .

// Avoids a hard-to-track-down bug by returning `c` instead of `12`
(+"12").toString(16);

ක්‍රියාවලිය ආපසු හැරවීමට ඔබට ඊටත් වඩා කෙටි බැවින් පහත විසඳුම භාවිතා කළ හැකිය.

var dec = +("0x" + hex);

ගූගල් ක්‍රෝම් සහ ෆයර්ෆොක්ස් වල එය මන්දගාමී බව පෙනේ, නමුත් ඔපෙරා හි එය සැලකිය යුතු වේගයකින් යුක්ත වේ. Http://jsperf.com/hex-to-dec බලන්න .


5

ජාවාස්ක්‍රිප්ට් හි දශම හෙක්සැඩිසිමල් බවට පරිවර්තනය කරන්නේ කෙසේද

කාර්යයන් සහ අරා වල අවුල් ජාලයක් නොතිබූ කුරිරු පිරිසිදු / සරල දශමයක් සිට ෂඩාස්රාකාර පරිවර්තනයක් සොයා ගැනීමට මට නොහැකි විය ... එබැවින් මට මෙය තනිවම කළ යුතුව තිබුණි.

function DecToHex(decimal) { // Data (decimal)

    length = -1;    // Base string length
    string = '';    // Source 'string'

    characters = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; // character array

    do { // Grab each nibble in reverse order because JavaScript has no unsigned left shift

        string += characters[decimal & 0xF];   // Mask byte, get that character
        ++length;                              // Increment to length of string

    } while (decimal >>>= 4); // For next character shift right 4 bits, or break on 0

    decimal += 'x'; // Convert that 0 into a hex prefix string -> '0x'

    do
        decimal += string[length];
    while (length--); // Flip string forwards, with the prefixed '0x'

    return (decimal); // return (hexadecimal);
}

/* Original: */

D = 3678;    // Data (decimal)
C = 0xF;    // Check
A = D;        // Accumulate
B = -1;        // Base string length
S = '';        // Source 'string'
H = '0x';    // Destination 'string'

do {
    ++B;
    A& = C;

    switch(A) {
        case 0xA: A='A'
        break;

        case 0xB: A='B'
        break;

        case 0xC: A='C'
        break;

        case 0xD: A='D'
        break;

        case 0xE: A='E'
        break;

        case 0xF: A='F'
        break;

        A = (A);
    }
    S += A;

    D >>>= 0x04;
    A = D;
} while(D)

do
    H += S[B];
while (B--)

S = B = A = C = D; // Zero out variables
alert(H);    // H: holds hexadecimal equivalent

5
අපොයි ... මෙය ඇත්තෙන්ම භයානක, භයානක ක්‍රමයක් වන අතර එය පවා කැත කේතකරණ ශෛලියකින් සිදු කරයි. අවංකවම: රේඛා බිඳීම් සහ ඉන්ඩෙන්ටේෂන් වල ඇති වැරැද්ද කුමක්ද? තනි අකුරු විචල්යයන්? ඇත්තටම?
වික්ටර් ෂ්‍රෝඩර්

1
එය සංශෝධනය කළේය. මේ ක්‍රමය භයානකද? විලාසිතාව වඩා හොඳද ?? මම මුලින් සිතුවේ සෑම
වචනයක්ම

4
කණගාටුයි, ඔව්, තවමත් භයානකයි. ඔබේ කේතය තවමත් අකාර්යක්ෂම ලූප ගොඩක් භාවිතා කරන අතර අනෙකුත් ගැටළු අතර ගෝලීය නාම අවකාශය දූෂණය කරයි. සරල ශ්‍රිත ඇමතුමකින් ඉටු කළ හැකි කාර්යයක් සඳහා ප්‍රවේශයම අධික ලෙස මරා දමනු ලැබේ. ඔබට JS හි කේතීකරණ විලාසය වැඩි දියුණු කිරීමට අවශ්‍ය නම්, w3.org/wiki/JavaScript_best_practices සහ google.github.io/styleguide/javascriptguide.xml වැනි තොරතුරු කියවීමට යන්නැයි මම තරයේ නිර්දේශ කරමි . විෂය ගැන ගූගල් කරන්න.
වික්ටර් ෂ්‍රෝඩර්

1
. ස්වදේශීය බ්‍රව්සර් වලට වඩා .toString (16) ශ්‍රිතය වන අතර, ෆයර්ෆොක්ස් විසින් ක්‍රෝම් වලට වැඩි පිරිසක් කැමති වීමට හේතුව ඔප්පු කරයි. නැත්නම් එය පසුපසටද ?? එක් දිනක් ක්‍රෝම් වේගවත් .toString (16) වෙත යාවත්කාලීන කළ හැකිය. කෙසේ හෝ මම සම්පූර්ණයෙන්ම වැරදියි, ඔබ සම්පූර්ණයෙන්ම වැරදියි. මගේ ඊගෝව පසෙකට දැමුවද, මම ඔබේ අදහස අවම වශයෙන් 30% ක් වත් ලබා ගනිමි. ;)
JonLikeSquirrel

2
ඔබට තනි අක්ෂර අඩංගු නූල් පෙළක් ප්‍රකාශ කිරීමට අවශ්‍ය නැත. අක්ෂර මාලාවක් ප්‍රකාශ කරන්න. වර්ග වරහන් භාවිතා කිරීමෙන් ඔබට අරාවකින් මෙන් නූලකින් චරිතයක් ලබා ගත හැකිය.
ඩේවිඩ් ස්පෙක්ටර්

3

ඒ සියල්ල සාරාංශ කිරීමට;

function toHex(i, pad) {

  if (typeof(pad) === 'undefined' || pad === null) {
    pad = 2;
  } 

  var strToParse = i.toString(16);

  while (strToParse.length < pad) {
    strToParse = "0" + strToParse;
  }

  var finalVal =  parseInt(strToParse, 16);

  if ( finalVal < 0 ) {
    finalVal = 0xFFFFFFFF + finalVal + 1;
  }

  return finalVal;
}

කෙසේ වෙතත්, ඔබට එය අවසානයේ දී පූර්ණ සංඛ්‍යාවක් බවට පරිවර්තනය කිරීමට අවශ්‍ය නොවන්නේ නම් (එනම් වර්ණ සඳහා), එවිට අගයන් negative ණ නොවන බවට වග බලා ගැනීම පමණක් ප්‍රමාණවත් වේ.


2

දෙදෙනෙකුගේ අනුපූරකය භාවිතා කරන (negative ණ සංඛ්‍යා ඇතුළත්) negative ණාත්මක හෝ ධනාත්මක දැයි පරීක්ෂා කිරීමකින් තොරව මට පැහැදිලි පිළිතුරක් හමු නොවීය. ඒ සඳහා, මම එක් විසඳුමකට මගේ විසඳුම පෙන්වමි:

((0xFF + number +1) & 0x0FF).toString(16);

ඔබට මෙම උපදෙස් ඕනෑම බයිට් ගණනකට භාවිතා කළ හැකිය, ඔබ FFඅදාළ ස්ථානවල පමණක් එකතු කරයි. උදාහරණයක් ලෙස, බයිට් දෙකකට:

((0xFFFF + number +1) & 0x0FFFF).toString(16);

ඔබට ෂඩාස්රාකාර තලයට අරා නිඛිලයක් දැමීමට අවශ්‍ය නම්:

s = "";
for(var i = 0; i < arrayNumber.length; ++i) {
    s += ((0xFF + arrayNumber[i] +1) & 0x0FF).toString(16);
}

2

ඔබ 'පූර්ණ' ජාවාස්ක්‍රිප්ට් හෝ CSS නිරූපණයකට පරිවර්තනය කිරීමට බලාපොරොත්තු වන්නේ නම්, ඔබට මෙවැනි දෙයක් භාවිතා කළ හැකිය:

  numToHex = function(num) {
    var r=((0xff0000&num)>>16).toString(16),
        g=((0x00ff00&num)>>8).toString(16),
        b=(0x0000ff&num).toString(16);
    if (r.length==1) { r = '0'+r; }
    if (g.length==1) { g = '0'+g; }
    if (b.length==1) { b = '0'+b; }
    return '0x'+r+g+b;                 // ('#' instead of'0x' for CSS)
  };

  var dec = 5974678;
  console.log( numToHex(dec) );        // 0x5b2a96


1

ඔබ විශාල සංඛ්‍යා සංඛ්‍යාවක් පරිවර්තනය කිරීමට සොයන්නේ නම්, අංකයට වඩා වැඩි සංඛ්‍යා. MAX_SAFE_INTEGER - 9007199254740991, එවිට ඔබට පහත කේතය භාවිතා කළ හැකිය

const hugeNumber = "9007199254740991873839" // Make sure its in String
const hexOfHugeNumber = BigInt(hugeNumber).toString(16);
console.log(hexOfHugeNumber)


1

මෙය ප්‍රෙස්ටෝල් සහ ටොඩ්ගේ විසඳුම් මත පදනම් වේ. කෙසේ වෙතත්, මෙය විචල්‍යයක ප්‍රමාණයට වෙනස් වන සාමාන්‍යකරණයකි (උදා: මයික්‍රොකොන්ට්රෝලර් අනුක්‍රමික ලොගයකින් අත්සන් කළ අගය විග්‍රහ කිරීම).

function decimalToPaddedHexString(number, bitsize)
{ 
  let byteCount = Math.ceil(bitsize/8);
  let maxBinValue = Math.pow(2, bitsize)-1;

  /* In node.js this function fails for bitsize above 32bits */
  if (bitsize > 32)
    throw "number above maximum value";

  /* Conversion to unsigned form based on  */
  if (number < 0)
    number = maxBinValue + number + 1;

  return "0x"+(number >>> 0).toString(16).toUpperCase().padStart(byteCount*2, '0');
}

පරීක්ෂණ පිටපත:

for (let n = 0 ; n < 64 ; n++ ) { 
     let s=decimalToPaddedHexString(-1, n); 
     console.log(`decimalToPaddedHexString(-1,${(n+"").padStart(2)}) = ${s.padStart(10)} = ${("0b"+parseInt(s).toString(2)).padStart(34)}`);
   }

පරීක්ෂණ ප්‍රති results ල:

decimalToPaddedHexString(-1, 0) =        0x0 =                                0b0
decimalToPaddedHexString(-1, 1) =       0x01 =                                0b1
decimalToPaddedHexString(-1, 2) =       0x03 =                               0b11
decimalToPaddedHexString(-1, 3) =       0x07 =                              0b111
decimalToPaddedHexString(-1, 4) =       0x0F =                             0b1111
decimalToPaddedHexString(-1, 5) =       0x1F =                            0b11111
decimalToPaddedHexString(-1, 6) =       0x3F =                           0b111111
decimalToPaddedHexString(-1, 7) =       0x7F =                          0b1111111
decimalToPaddedHexString(-1, 8) =       0xFF =                         0b11111111
decimalToPaddedHexString(-1, 9) =     0x01FF =                        0b111111111
decimalToPaddedHexString(-1,10) =     0x03FF =                       0b1111111111
decimalToPaddedHexString(-1,11) =     0x07FF =                      0b11111111111
decimalToPaddedHexString(-1,12) =     0x0FFF =                     0b111111111111
decimalToPaddedHexString(-1,13) =     0x1FFF =                    0b1111111111111
decimalToPaddedHexString(-1,14) =     0x3FFF =                   0b11111111111111
decimalToPaddedHexString(-1,15) =     0x7FFF =                  0b111111111111111
decimalToPaddedHexString(-1,16) =     0xFFFF =                 0b1111111111111111
decimalToPaddedHexString(-1,17) =   0x01FFFF =                0b11111111111111111
decimalToPaddedHexString(-1,18) =   0x03FFFF =               0b111111111111111111
decimalToPaddedHexString(-1,19) =   0x07FFFF =              0b1111111111111111111
decimalToPaddedHexString(-1,20) =   0x0FFFFF =             0b11111111111111111111
decimalToPaddedHexString(-1,21) =   0x1FFFFF =            0b111111111111111111111
decimalToPaddedHexString(-1,22) =   0x3FFFFF =           0b1111111111111111111111
decimalToPaddedHexString(-1,23) =   0x7FFFFF =          0b11111111111111111111111
decimalToPaddedHexString(-1,24) =   0xFFFFFF =         0b111111111111111111111111
decimalToPaddedHexString(-1,25) = 0x01FFFFFF =        0b1111111111111111111111111
decimalToPaddedHexString(-1,26) = 0x03FFFFFF =       0b11111111111111111111111111
decimalToPaddedHexString(-1,27) = 0x07FFFFFF =      0b111111111111111111111111111
decimalToPaddedHexString(-1,28) = 0x0FFFFFFF =     0b1111111111111111111111111111
decimalToPaddedHexString(-1,29) = 0x1FFFFFFF =    0b11111111111111111111111111111
decimalToPaddedHexString(-1,30) = 0x3FFFFFFF =   0b111111111111111111111111111111
decimalToPaddedHexString(-1,31) = 0x7FFFFFFF =  0b1111111111111111111111111111111
decimalToPaddedHexString(-1,32) = 0xFFFFFFFF = 0b11111111111111111111111111111111
Thrown: 'number above maximum value'

සටහන: එය බිට්සයිස් 32 ට වඩා අසමත් වන්නේ මන්දැයි නිශ්චිතවම කිව නොහැක


-3

මෙන්න මගේ විසඳුම:

hex = function(number) {
  return '0x' + Math.abs(number).toString(16);
}

ප්රශ්නය මෙසේ කියයි: "ජාවාස්ක්‍රිප්ට් හි දශම හෙක්සැඩිසිමල් බවට පරිවර්තනය කරන්නේ කෙසේද" . මෙම ප්රශ්නය ද මේ ෂඩ් දශම String එකක් 0x prefix භාවිතා කල හැක ආරම්භ කළ යුතු බව සඳහන් නොකරන අතර, කේතය මෙසේ ලියයි කෙනෙකුට හඳුනාගැනීමට 0x ෂඩ් දශම කේත එකතු වන බව දැන ගත යුතු ෂඩ් දශම කේත සිට කි්රයාමාර්ගික හඳුනා හා අනෙකුත් සංඛ්යා (1234 ෂඩාස්රාකාර, දශම හෝ විය හැක) පවා අෂ්ටක).

එබැවින්, මෙම ප්‍රශ්නයට නිවැරදිව පිළිතුරු සැපයීම සඳහා, ස්ක්‍රිප්ට් ලිවීමේ අරමුණ සඳහා, ඔබ 0x උපසර්ගය එක් කළ යුතුය.

Math.abs (N) ශ්‍රිතය සෘණ ධනාත්මක බවට පරිවර්තනය කරයි, ප්‍රසාද දීමනාවක් ලෙස, යමෙකු එය ලී-චිපර් හරහා ධාවනය කළ බවක් නොපෙනේ.

මට අවශ්‍ය පිළිතුරට ක්ෂේත්‍ර පළල පිරිවිතරයක් තිබෙන්නට ඇත, එබැවින් අපට ෂඩාස්රාකාර සංස්කරණ යෙදුමක ලැයිස්තුගත කර ඇති ආකාරය ඔබ දකින ආකාරයට 8/16/32 / 64-bit අගයන් පෙන්විය හැකිය. එය සත්‍ය, නිවැරදි පිළිතුරයි.


1
සාමාන්‍ය කේතීකරණ ක්‍රියාවලියේදී, අකුරකින් ආරම්භ වන ඕනෑම ඇල්ෆා සංඛ්‍යාත්මක අනුක්‍රමයක්, අංකයක් නොවේ. උදාහරණයක් ලෙස: ABCDEF012345678 යනු පෘථිවියේ සෑම කේතීකරණ භාෂාවකම වලංගු හඳුනාගැනුමකි.
හයිපර්සොෆ්ට් සිස්ටම්ස්

1
ඔහ්, සහ 0x උපසර්ගය ජාවාස්ක්‍රිප්ට් සඳහා ගැටළුවක් නොවේ: Number('0xFF') === 255;ප්‍රතිලෝම මෙහෙයුම අවශ්‍ය ඔබ එහි සිටින සියලු දෙනාටම.
හයිපර්සොෆ්ට් පද්ධති
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.