কিভাবে জাভাস্ক্রিপ্টে দশমিক হেক্সাডেসিমাল রূপান্তর করতে


1479

দশমিক মানগুলিকে আপনি জাভাস্ক্রিপ্টে হেক্সাডেসিমাল সমতলে কীভাবে রূপান্তর করবেন?


7
এখানে কেবল একটি সতর্কতা হ'ল আপনি যখন স্ট্রিং প্রতিনিধিত্ব থেকে শুরু করছেন এটি হেক্সে রূপান্তর করার অংশ হিসাবে যখন আপনি এটি সংখ্যায় পরিণত করেন তখন যথার্থতা হারাতে খুব সহজ। Danvk.org/wp/2012-01-20/… দেখুন ।
স্টাডিজিক

এই ফাংশনটি আপনার যা ঠিক তেমন প্রয়োজন
মোহাম্মদ মুসাভি

উত্তর:


2473

এর সাথে একটি নম্বরকে হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তর করুন:

hexString = yourNumber.toString(16);

এবং প্রক্রিয়াটি এর সাথে বিপরীত করুন:

yourNumber = parseInt(hexString, 16);

42
আপনার নাম এই ক্ষেত্রে একটি হেক্স স্ট্রিং। উদাহরণস্বরূপ (255) .তো স্ট্রিং (16) == 'ff' && parseInt ('ff', 16) == 255
19

8
@ প্রথমত, আপনি যদি এই কৌশলটি ব্যবহার করে জাভাস্ক্রিপ্ট নম্বর (এটি একটি নম্বর অবজেক্ট, যা ECMA স্ক্রিপ্টটিতে একটি ডাবল) রূপান্তর করে তবে আপনি "আলগা নির্ভুলতা" পাবেন না। আপনি যে প্রশ্নটি যুক্ত করেছেন সেটি হ'ল বিশেষত সংখ্যাগুলিকে একটি ডাবলের সাথে মানিয়ে নেওয়ার জন্য উল্লেখ করা হয় (সুতরাং প্রশ্নে স্ট্রিং প্রতিনিধিত্ব)। আপনি যদি একটি নম্বর পেয়ে থাকেন তবে এটি কার্যকর হবে। আপনার যদি জাভাস্ক্রিপ্ট নম্বর অবজেক্ট (একটি ডাবল) হতে খুব বড় কিছু থাকে তবে আপনাকে অন্য কিছু খুঁজে পেতে হবে।
প্রেস্টল

12
@ ডেরেক, আমার একটি মনস্তাত্ত্বিক সমস্যা রয়েছে যা আমাকে অপ্রয়োজনীয় প্রথম বন্ধনী সহ্য করতে দেয় না ... অন্য সবাইকে, yourNumberএকটি পরিবর্তনশীল। আপনি যদি একটি সংখ্যাসূচক আক্ষরিক ব্যবহার করতে চান তবে আপনাকে এর মতো কিছু করতে হবে (45).toString(16)তবে আপনি যদি একটি নম্বরকে কঠোর কোডিং করে থাকেন তবে দয়া করে কেবল এটি একটি হেক্স স্ট্রিং হিসাবে লিখুন ... (45).toString(16)সর্বদা সমান হবে '2d', সুতরাং সিপিইউ নষ্ট করবেন না চক্র যে আউট।
প্রীতিল

21
@ প্রসতুল "সিপু চক্রটি এটির জন্য নষ্ট করবেন না" - এটি অকাল অপ্টিমাইজেশন বলে। জাভাস্ক্রিপ্টটি 286-এ না চালানো হলে আমি ওভারহেডের বিষয়ে সন্দেহ করি। তদ্ব্যতীত, '45' একটি যাদু নম্বর হতে পারে যা প্রোগ্রামারটিকে সনাক্ত করতে সক্ষম হতে হবে (যেমন সেকেন্ডে সময়সীমা নির্ধারণের সময়কালে), যখন '2 ডি', ভাল কে তা চিনতে চলেছে?
দেজয় ক্লেটন

47
আপনি যদি প্রথম বন্ধনী পছন্দ না করেন তবে আপনি কেবল একটি অতিরিক্ত বিন্দু ব্যবহার করতে পারেন:42..toString(16)
টমাস ওয়াটসন

142

আপনার যদি বিট ফিল্ডস বা 32-বিট রঙের মতো জিনিসগুলি পরিচালনা করতে হয় তবে আপনাকে সাইনড নম্বর দিয়ে কাজ করতে হবে। জাভাস্ক্রিপ্ট ফাংশনটি toString(16)নেতিবাচক হেক্সাডেসিমাল নম্বর প্রদান করবে যা সাধারণত আপনি চান না। এটি ইতিবাচক সংখ্যা তৈরি করতে এই ক্রিয়াটি কিছু ক্রেজি সংযোজন করে।

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-বিট বিট ক্ষেত্রকে স্বাক্ষরযুক্ত সংখ্যা হিসাবে প্রতিনিধিত্ব করতে পারে (সংখ্যা দেখুন MA একই কারণে স্বাক্ষরবিহীন রূপান্তরটি এইভাবে লেখা যেতে পারে:number = 0x100000000 + number;
জোহানেস ম্যাটোকিক

3
আমার পূর্ববর্তী মন্তব্যে একটি সংক্ষিপ্ত নোট: যদিও হেক্স উপস্থাপনার ক্ষেত্রে সংখ্যা পর্যন্ত কাজ করা উচিত MA MAXائشE_INTEGER এটি বিটওয়াইস ক্রিয়াকলাপের জন্য ধারণ করে না (যা প্রায়শই 32-বিট রঙ তৈরি করতে ব্যবহৃত হয়)। বিটওয়াইজ অপারেশনের ফলাফল সর্বদা স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার হয়। অতএব বিটওয়াইস ফলাফল> = 2 ^ 31 নেতিবাচক এবং 0x100000000 | 0 === 0.
জোহানেস ম্যাটোকিক

25
আপনি >>>স্বাক্ষরবিহীন উপস্থাপনা যেমন ((-3253) >>> 0).toString(16)রিটার্নে নম্বর রূপান্তর করতে অপারেটর ব্যবহার করতে পারেন "fffff34b"
csharpfolk

1
+1দরকারী সংযোজনের জন্য, তবে আপনি যদি নম্বরগুলিকে অন্য স্বরলিপিতে রূপান্তর করেন তবে সমস্ত সংখ্যা ইতিমধ্যে ইতিমধ্যে "ইতিবাচক" ইতিবাচক, অন্যথায় আপনি নেতিবাচক ফলাফল চান।
কার্ল স্মিথ

82

নীচের কোডটি দশমিক মান 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
এটি সঠিকভাবে নেতিবাচক মানগুলি পরিচালনা করবে না। ডেসিমালটোহেক্স (-6, 4) 00-6 এ ফিরে আসবে।
জোনএমআর

3
এটিতে ভাসা নিয়েও সমস্যা রয়েছে তবে ম্যাথ.গ্রাউন্ডে রেখে () এটি ঠিক করে দিয়েছে। (+ 1ed)
মাইকেল -

আমি একটি অ্যারে ('255,0,55', ইত্যাদি) থেকে "টানছি" নাম্বার এবং। স্ট্রিং (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
এটি প্রসারিত করা এতটা কঠিন নয়, আপনি সেখানে শেষ সংখ্যাটি স্লাইস (সংখ্যা) দিয়ে কাটাচ্ছেন। আপনি যদি সামনে আরও শূন্য যোগ করেন তবে তা ঠিকঠাক কাজ করবে।
টাটারাইজ

19
ES6 const hex = d => Number(d).toString(16).padStart(2, '0')😁
নিনহ ফাম

39

সম্পূর্ণতার জন্য, আপনি যদি দুজনের পরিপূরক হেক্সাডেসিমেলকে নেতিবাচক সংখ্যার উপস্থাপন করতে চান তবে আপনি শূন্য-পূরণ-ডান শিফট >>>অপারেটরটি ব্যবহার করতে পারেন । এই ক্ষেত্রে:

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

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

তবে একটি সীমাবদ্ধতা রয়েছে: জাভাস্ক্রিপ্ট বিটওয়াইস অপারেটরগুলি তাদের অপারেশনগুলিকে 32 বিটের ক্রম হিসাবে বিবেচনা করে , অর্থাৎ আপনি 32-বিট দুইয়ের পরিপূরক পাবেন।


2
এটি এখন পর্যন্ত এই প্রশ্নের সবচেয়ে মূল্যবান উত্তর :)
আলবার্টজান

সমস্ত প্রশ্নের মাধ্যমে খনন করা হচ্ছে কারণ এতে C# number to hexadecimalবিভিন্ন ফলাফল তৈরি হয়েছিল Javascript number to hexadecimal। দেখে মনে হচ্ছে জাভাস্ক্রিপ্টে negativeণাত্মক সংখ্যা রয়েছে। এই উত্তরটি সমস্যার সমাধান বলে মনে হচ্ছে।
goamn

এটি ব্যাপকভাবে সহায়ক ছিল, আপনাকে ধন্যবাদ! আমি এটি আরজিবি রঙের জন্য ব্যবহার করছিলাম, সুতরাং 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

আরজিবি-মান-হেক্সাডেসিমাল ফাংশন ( #এইচটিএমএল / সিএসএসের জন্য অন্য কোথাও যুক্ত করুন ) এর জন্য এই কয়েকটি ভাল ধারণার সংমিশ্রণ :

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

16

গৃহীত উত্তর একক সংখ্যা ফেরত হেক্সাডেসিমাল কোডগুলিকে বিবেচনা করে নি। এটি সহজেই সমন্বয় করে:

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;
}

আমি বিশ্বাস করি উপরোক্ত উত্তরগুলি অন্য কোনও ফর্ম বা অন্য কোনও দ্বারা বহুবার পোস্ট করা হয়েছে। আমি এগুলিকে একটি টুএক্স () ফাংশনটিতে গুটিয়ে রাখি:

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 এ ডাবল উদ্ধৃতি), তাই আমি এটি ঠিক করেছি। যাহোক! বেশ কিছুটা পরীক্ষার পরে এবং আলমাজ দ্বারা পোস্টটি পড়ে - আমি বুঝতে পেরেছি আমি কাজ করতে নেতিবাচক নম্বর পেতে পারি না।

আরও - আমি এ সম্পর্কে কিছু পড়তে পেরেছিলাম এবং যেহেতু সমস্ত জাভাস্ক্রিপ্ট নম্বরগুলি 64 বিট শব্দ হিসাবে সংরক্ষণ করা হয় তা যাই হোক না কেন - আমি 64H বিট শব্দটি পেতে নামহেক্স কোডটি সংশোধন করার চেষ্টা করেছি। তবে দেখা যাচ্ছে যে আপনি এটি করতে পারবেন না। যদি আপনি "3.14159265" কে একটি সংখ্যা হিসাবে চলক হিসাবে স্থাপন করেন - আপনি যে পরিমাণটি পেতে সক্ষম হবেন তা হ'ল "3", কারণ ভগ্নাংশটি কেবলমাত্র দশটি (IE: 10.0) দ্বারা বারে বার করে সংখ্যাটি অ্যাক্সেসযোগ্য। বা অন্যভাবে বলতে গেলে - 0x এফের হেক্সাডেসিমাল মান অ্যান্ডেড হওয়ার আগে ভাসমান পয়েন্টের মানটি পূর্ণসংখ্যায় অনুবাদ করে দেয় যা পিরিয়ডের পিছনে সমস্ত কিছু সরিয়ে দেয়। মানটিকে সামগ্রিকভাবে গ্রহণের পরিবর্তে (যেমন: 3.14159265) এবং 0xF মানের বিপরীতে ভাসমান বিন্দু মানটি বজায় রাখা।

সুতরাং সবচেয়ে ভাল জিনিস, এই ক্ষেত্রে, 3.14159265 কে একটি স্ট্রিংয়ে রূপান্তর করা এবং তারপরে কেবল স্ট্রিংটি রূপান্তর করা। উপরের কারণে এটি নেতিবাচক সংখ্যাগুলিকে রূপান্তর করাও সহজ করে তোলে কারণ বিয়োগ চিহ্নটি মূল্যের সামনের দিকে 0x26 হয়ে যায়।

সুতরাং আমি যা করেছি তা স্থির করেছিলাম যে চলকটিতে একটি সংখ্যা রয়েছে - কেবল এটি একটি স্ট্রিংতে রূপান্তর করুন এবং স্ট্রিংকে রূপান্তর করুন। সবার কাছে এটির অর্থ হ'ল সার্ভারের দিকে আপনাকে আগত স্ট্রিংটি আনহেক্স করতে হবে এবং তারপরে আগত তথ্যগুলি সংখ্যাসূচক হবে তা নির্ধারণ করতে হবে। আপনি কেবল সংখ্যার সামনের দিকে "#" এবং একটি অক্ষরের স্ট্রিংয়ের সামনে "A" যুক্ত করে সহজেই তা করতে পারেন। টুহেক্স () ফাংশনটি দেখুন।

আনন্দ কর!

আরও এক বছর এবং অনেক চিন্তাভাবনার পরে, আমি স্থির করেছিলাম যে "টুএক্স" ফাংশনটি (এবং আমার একটি "ফ্রমহেক্স" ফাংশনও রয়েছে) সত্যিই পুনর্নির্মাণ করা দরকার। পুরো প্রশ্নটি ছিল "আমি কীভাবে এটি আরও দক্ষতার সাথে করতে পারি?" আমি সিদ্ধান্ত নিয়েছি যে হেক্সাডেসিমাল ফাংশনটিতে / থেকে কোনও কিছু ভগ্নাংশের অংশ হিসাবে যত্ন নেওয়া উচিত নয় তবে একই সাথে এটিও নিশ্চিত করা উচিত যে ভগ্নাংশগুলি স্ট্রিংয়ের অন্তর্ভুক্ত রয়েছে।

তাহলে প্রশ্নটি হয়ে গেল, "আপনি কীভাবে জানেন যে আপনি একটি হেক্সাডেসিমাল স্ট্রিং নিয়ে কাজ করছেন?" উত্তরটি সহজ। স্ট্যান্ডার্ড প্রাক-স্ট্রিং তথ্য ব্যবহার করুন যা ইতিমধ্যে বিশ্বজুড়ে স্বীকৃত।

অন্য কথায় - "0x" ব্যবহার করুন। সুতরাং এখন আমার টুএক্স ফাংশনটি দেখতে আছে যে এটি ইতিমধ্যে আছে কিনা এবং এটি যদি থাকে - এটি কেবল তার কাছে প্রেরিত স্ট্রিংটি ফেরত দেয়। অন্যথায়, এটি স্ট্রিং, সংখ্যা, যাই হোক না কেন রূপান্তর করে। এখানে হেক্স ফাংশন সংশোধিত:

/////////////////////////////////////////////////////////////////////////////
//  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;
}

টোএক্স () ফাংশনের মতো, থেকেহেক্স () ফাংশনটি প্রথমে "0x" সন্ধান করে এবং তারপরে আগত তথ্যগুলি স্ট্রিংয়ে অনুবাদ করে যদি এটি ইতিমধ্যে স্ট্রিং না হয়। আমি জানি না এটি স্ট্রিংটি কীভাবে হবে না - তবে কেবল ক্ষেত্রে - আমি যাচাই করি। ফাংশনটি তখন দুটি অক্ষর ধরে এবং এএসসিআইআই অক্ষরগুলিতে অনুবাদ করে। আপনি যদি এটি ইউনিকোড অনুবাদ করতে চান তবে আপনাকে একবারে চারটি (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;

?>

জাভাস্ক্রিপ্ট কীভাবে টসস্ট্রিং () ফাংশনের ক্ষেত্রে কাজ করে, সেই সমস্ত সমস্যা দূর করা যেতে পারে যা আগে সমস্যা তৈরি করেছিল। এখন সমস্ত স্ট্রিং এবং সংখ্যা সহজেই রূপান্তর করা যায়। তদুপরি, অবজেক্টগুলির মতো জিনিসগুলি জাভাস্ক্রিপ্ট দ্বারা নিজেই ত্রুটি উত্পন্ন করবে। আমি বিশ্বাস করি এটি যতটা পায় ততটাই ভাল। জাভাস্ক্রিপ্টে কেবলমাত্র একটি টুএক্স () এবং থেকে হেক্স () ফাংশন অন্তর্ভুক্ত করার জন্য ডাব্লু 3 সি এর একমাত্র উন্নতি বাকি রয়েছে।


আমার মনে হয় আপনি এখানে কাজ করার জন্য এখনও কাজ পেয়েছেন ... উদাহরণস্বরূপ সম্ভবত আপনি যা চান তা if( s.substr(0,2)আগে if (typeof s != "string")নয়। আমি যা ফিরে এসেছি তা আমি প্রত্যাশা করি না ( toHex(0x1f635)দেয় "0x313238353635")। আরও তদন্ত করেনি।
ruffin

আমি বিশ্বাস করি আপনি ভুল বলেছেন। আপনার উদাহরণটি হেক্স স্ট্রিং ব্যবহার করছে যা কোনও স্ট্রিং নয় - একটি সংখ্যা। অতএব 1f635 এটি যেভাবে চলে আসবে। আপনি যদি "0x1f635" রাখেন তবে এটি অন্যরকমভাবে প্রকাশিত হত। (যেমন: রুটিনটি কেবল আপনার রুটিনে প্রেরিত হেক্স নম্বরটি ফিরিয়ে আনতে পারে)) :-)
মার্ক ম্যানিং

প্রথম পয়েন্টটি হ'ল আপনি substr& toLowerCaseএকটি নন-স্ট্রিং ব্যবহার করতে পারবেন না ... সুতরাং হয় typeofতাড়াতাড়ি আসা দরকার, অথবা, যদি আপনি toHexঠিক একটি নন-স্ট্রিং নিক্ষেপ করার প্রত্যাশা করেন, আপনার typeofচেকটি পুরোপুরি সরিয়ে নেওয়া উচিত । ধারণা তৈরী কর? এটি হ'ল, যদি আমি সম্পাদনা ছাড়াই কোডটি এখানে ব্যবহার করি এবং কল করি তবে আমি toHex(0x1f635)পেয়ে যাব Uncaught TypeError: s.substr is not a function। আমি যদি স্ট্রিং কাস্টটিকে আগে স্থানান্তরিত করি তবে আপনি ঠিক বলেছেন, সংখ্যাটি দশমিক দশমিক প্রথম দিকে যেতে পারে, সম্ভবত জিনিসগুলি পাশাপাশি যায়। অবশ্যই কোনটির অর্থ এখানে sস্ট্রিং না থাকলে আপনি এখানে একটি সাধারণ castালাই করতে পারবেন না ।
ruffin

আসলে, এক্সপির অধীনে এটি সূক্ষ্মভাবে কাজ করে। জাভাস্ক্রিপ্টে বেশ কয়েকটি আপডেট হয়েছে যা জাভাস্ক্রিপ্টকে টাইপকাস্ট করে তুলছে। যা ব্যতিক্রম ছুঁড়ে ফেলবে। এক্সপির আওতায় এটি কাজ করে। অন্তত আমার জন্য. একটি টাইপকাস্ট বিশ্বে - "if (typof s ==" স্ট্রিং "&& s.substr (0,2) ==" 0x ") {রিটার্ন;}" লাগানো উপযুক্ত। তবে ox1f635 এখনও স্ট্রিং নয়। :-)
মার্ক ম্যানিং

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

১ theটি মূলমাত্রা এবং হেক্সাডেসিমাল সংখ্যায় ১ values ​​টি মান রয়েছে :-)


12

আগ্রহী প্রত্যেকের জন্য, এখানে একটি জেএসফিডেল এই প্রশ্নের দেওয়া বেশিরভাগ উত্তরের তুলনা করছে

এবং এখানে যে পদ্ধতিটি আমি শেষ করে দিয়েছি:

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

এছাড়াও, মনে রাখবেন যে আপনি যদি রঙিন ডেটা টাইপ হিসাবে সিএসএসে ব্যবহারের জন্য দশমিক থেকে হেক্সে রূপান্তর করতে চান তবে আপনি পরিবর্তে দশমিকের থেকে আরজিবি মানগুলি বের করতে এবং আরজিবি () ব্যবহার করতে পছন্দ করতে পারেন ।

উদাহরণস্বরূপ ( জেএসফিডাল ):

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-elementসিএসএস colorসম্পত্তি এতে সেট করে rgb(64, 62, 154)


10

অক্ষরগুলির একটি সেট সংখ্যায় সীমাবদ্ধ / প্যাড করা:

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

2
এটি একটি সংখ্যাকে স্ট্রিং হেক্স এবং প্যাডের নেতৃস্থানীয় শূন্যে রূপান্তরিত করে, এটি সুন্দর!
গর্ডন

10

এখানে একটি ছাঁটা 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'

@ হাইপারসটফ সিস্টেমগুলির সাথে দৃ with় মতবিরোধে, যদি আপনার পরিবেশ বা পরিস্থিতি আপনাকে বোঝায়, তবে ES6 ব্যবহার করুন। প্রতিটি স্ক্রিপ্টের উত্তরাধিকারসূত্রে বুটলেগ দোভাষী দৌড়ানোর প্রয়োজন হয় না, কারণ হিসাবে বাবেলও বিদ্যমান। এবং সর্বশেষে, আপনি যদি এটি জানেন তবে ES6 আরও সুগঠিত। এটি বলেছিল যে স্ট্যান্ডার্ড জেএস উত্তর দেওয়া আরও বেশি লোককে সহায়তা করতে পারে তবে পুরানো জেএস সংস্করণগুলির জন্য অন্যান্য উত্তর রয়েছে বিবেচনা করে, একটি ES6 উত্তর থাকা কেবল উপকারী, "এইভাবেই আমি আবার কীভাবে করেছি" রেন্ট অবশ্যই প্রয়োজন হয় না।
WiR3D

মতামত সত্য তৈরি করে না, সুতরাং আপনার "যুক্তি" অবৈধ। @ ওয়াইআর
হাইপারসটফ সিস্টেমগুলি

@ হাইপারসটফ সিস্টেমগুলি এটি আপনার মতো বৈধ তবে বেশি না, কারণ আপনার মতামত ঠিক এমন একটি প্রসঙ্গে সীমাবদ্ধ করে যা সম্ভবত বেশিরভাগ আধুনিক অ্যাপ্লিকেশনগুলিতে অবৈধ।
WiR3D

ব্যবহারকারীর ত্রুটি: "ঠিক যেমন মতামত", "সম্ভবত" এবং "সর্বাধিক"।
হাইপারসোফট সিস্টেমগুলি

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 ধন্যবাদ! সিএসএসের সাথে কাজ করার সময়, টসস্ট্রিং (16) গুরুত্বপূর্ণ তাই আপনি এফএফ 10000
টাইলার ইজেটো

7
সিএসএস (বা এসভিজি, যা সিএসএস-স্টাইলের রঙিন স্পেসিফিকেশন গ্রহণ করে) নিয়ে কাজ করার সময় আপনি color: rgb(r,g,b)rg এবং b দশমিক সংখ্যা যেখানে সেখানে লিখে পুরো বিষয়টিকে পাশ কাটাতে পারেন।
teleg

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 }
আইকুট Çevik

9

আপনি যদি কোনও সংখ্যাকে কোনও আরজিবিএ রঙিন মানের একটি হেক্সাডেসিমাল উপস্থাপনে রূপান্তর করতে চান তবে আমি এখান থেকে বেশ কয়েকটি টিপসের সবচেয়ে দরকারী সংমিশ্রণ হিসাবে এটি পেয়েছি:

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

8

আমি যতদূর জানি মন্তব্য 57807 ভুল এবং ভালো কিছু হওয়া উচিত: Var হেক্স = নম্বর (ঘ) .toString (16); পরিবর্তে var hex = parseInt (d, 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

আর সংখ্যাটি নেতিবাচক হলে?

এখানে আমার সংস্করণ।

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

আমি বেশ বড় লুপে হেক্স স্ট্রিংয়ে রূপান্তর করছি, তাই দ্রুততমটির সন্ধান করার জন্য আমি কয়েকটি কৌশল চেষ্টা করেছি। আমার প্রয়োজনীয়তার ফলস্বরূপ একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং থাকা উচিত এবং নেতিবাচক মানগুলি সঠিকভাবে এনকোড করা উচিত (-1 => ff..f)।

.toString(16)আমাকে সঠিকভাবে এনকোড করার জন্য নেতিবাচক মানগুলির প্রয়োজন হওয়ায় সহজ আমার পক্ষে কাজ করেনি। নিম্নলিখিত কোডটি আমি এখন পর্যন্ত 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) তবে এখনও methodsণাত্মক মানগুলিকে সঠিকভাবে এনকোড করে এমন পদ্ধতিগুলি ছাড়িয়ে যেতে হবে।


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
এটি সংশোধিত। এই উপায় কি ভয়ঙ্কর? এবং স্টাইল কি আরও ভাল ?? আমি প্রাথমিকভাবে ভেবেছিলাম চিঠিগুলির সাথে এইভাবে বানানো প্রতিটি পদক্ষেপ "আক্ষরিক" দিয়ে বোঝা আরও সহজ হবে ... কখনও কখনও আমি বেশ বোকা হতে পারি
JonLikeSquirrel

4
দুঃখিত, হ্যাঁ, এখনও ভয়ঙ্কর। আপনার কোডটি এখনও প্রচুর অদক্ষ লুপ ব্যবহার করে এবং অন্যান্য সমস্যাগুলির মধ্যে গ্লোবাল নেমস্পেসকে দূষিত করছে। পদ্ধতির একটি কার্যকারিতা কল দ্বারা সম্পন্ন করা যায় এমন কোনও কাজের জন্য নিজেই ওভারকিল। আপনি যদি জেএসে আপনার কোডিং শৈলীর উন্নতি করতে চান তবে আমি দৃ strongly ়ভাবে সুপারিশ করছি যে আপনি w3.org/wiki/JavaScript_best_practices এবং google.github.io/styleguide/javascriptguide.xml এর মতো উপাদানগুলি পড়ুন । বিষয় সম্পর্কে শুধু গুগল।
ভিক্টর শ্রাইডার

1
আমি ক্রোমে একটি গতি পরীক্ষা করেছি এবং আমার ওভারকিল ফাংশন .toString (16) এর চেয়ে 30% বেশি গতিযুক্ত, ফায়ারফক্সে আমার ফাংশন .toString (16) এর চেয়ে 40% ধীর গতির ... ক্রোম প্রমাণিত করে যে আমার অতিরিক্ত লুপগুলি আরও দক্ষ স্থানীয় ব্রাউজারগুলি .toString (16) ফাংশনের চেয়ে ফায়ারফক্স প্রমাণ করে যে আরও লোক কেন ক্রোমকে পছন্দ করে। নাকি পিছনের দিকে ?? একদিন ক্রোম এমনকি দ্রুত .to স্ট্রিংয়ে আপডেট হতে পারে (16) উভয় ক্ষেত্রেই আমাকে ভুল করে! যেভাবেই হোক আমি পুরোপুরি ভুল নই, এবং আপনার সম্পূর্ণ সঠিক নয়। যদিও আমার অহংটা আমি আলাদা করে রেখেছি, আমি আপনার পয়েন্টটি এর কমপক্ষে 30% পেয়েছি। ;)
জনলাইকস্পুইরেল

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;
}

তবে, যদি আপনাকে এটিকে শেষে কোনও পূর্ণসংখ্যায় (অর্থাত্ রঙের জন্য) রূপান্তর করতে না হয়, তবে মানগুলি নেতিবাচক নয় কিনা তা নিশ্চিত করে পর্যাপ্ত হওয়া উচিত।


2

আমি এটির নেতিবাচক বা ধনাত্মক কিনা তা যাচাই বাছাই করে একটি পরিষ্কার উত্তর খুঁজে পাইনি, এতে দু'জনের পরিপূরক (নেতিবাচক সংখ্যা অন্তর্ভুক্ত) ব্যবহার করা হয়। তার জন্য, আমি আমার বাইটে আমার সমাধানটি দেখাই:

((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

আপনি যদি কোনও 'পূর্ণ' জাভাস্ক্রিপ্ট বা সিএসএস উপস্থাপনায় রূপান্তর করতে চান তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন:

  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

আপনি যদি বৃহত্তর পূর্ণসংখ্যার অর্থাত্ সংখ্যার চেয়ে বড় সংখ্যার রূপান্তর করতে খুঁজছেন MA

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)}`);
   }

পরীক্ষার ফলাফল:

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);
}

প্রশ্নটি বলে: "দশমিকটি জাভাস্ক্রিপ্টে হেক্সাডেসিমালে রূপান্তর কীভাবে" । যদিও, প্রশ্নটি নির্দিষ্ট করে না যে হেক্সাডেসিমাল স্ট্রিংটি 0x উপসর্গ দিয়ে শুরু হওয়া উচিত, যে কেউ কোড লেখেন তা জানতে হবে যে প্রোগ্রামিং শনাক্তকারী এবং অন্যান্য সংখ্যার (1234 হেক্সাডেসিমাল, দশমিক, বা হতে পারে) থেকে হেক্সাডেসিমাল কোডগুলিকে আলাদা করতে 0x যুক্ত করা হয়েছে x এমনকি অক্টাল)।

সুতরাং, স্ক্রিপ্ট-লেখার উদ্দেশ্যে, এই প্রশ্নের সঠিক উত্তর দেওয়ার জন্য আপনাকে অবশ্যই 0x উপসর্গ যুক্ত করতে হবে।

ম্যাথ.এবস (এন) ফাংশনটি নেতিবাচককে ধনাত্মক রূপান্তরিত করে এবং বোনাস হিসাবে, দেখে মনে হয় না যে কেউ এটি কাঠ-চিপার মাধ্যমে চালিয়েছিল।

আমি যে উত্তরটি চেয়েছিলাম তা ফিল্ড-প্রস্থের নির্দিষ্টকরণকারক থাকতে পারে, সুতরাং আমরা উদাহরণস্বরূপ 8/16/32/64-বিট মানগুলি যেভাবে আপনি হেক্সাডেসিমাল সম্পাদনা অ্যাপ্লিকেশনটিতে তালিকাভুক্ত দেখতে পাবেন তা প্রদর্শন করতে পারি। এটি, আসল, সঠিক উত্তর।


1
সাধারণ কোডিং অনুশীলনে, কোনও অক্ষর দিয়ে শুরু হওয়া কোনও আলফা-সংখ্যাগত অনুক্রম, কোনও সংখ্যা নয়। উদাহরণস্বরূপ: ABCDEF012345678 গ্রহের প্রায় প্রতিটি কোডিং ভাষায় একটি বৈধ সনাক্তকারী।
হাইপারসোফট সিস্টেম

1
ওহ, এবং 0x উপসর্গটি জাভাস্ক্রিপ্টের জন্য কোনও সমস্যা নয়: Number('0xFF') === 255;আপনারা যারা বিপরীত ক্রিয়াকলাপ চান সেখানে ol
হাইপারসোফট সিস্টেমগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.