[{"data":1,"prerenderedAt":872},["ShallowReactive",2],{"guide-base-conversion-programming-languages":3},{"id":4,"title":5,"body":6,"date":864,"description":865,"extension":866,"meta":867,"navigation":209,"path":868,"readingTime":219,"seo":869,"stem":870,"__hash__":871},"guides\u002Fguides\u002Fbase-conversion-programming-languages.md","Base Conversion in Programming Languages: A Practical Guide",{"type":7,"value":8,"toc":842},"minimark",[9,14,18,21,25,28,155,159,170,258,261,264,275,421,439,442,452,500,510,514,517,521,524,593,597,600,647,651,655,666,670,680,684,696,700,711,715,718,768,771,775,801,805,826,830,838],[10,11,13],"h2",{"id":12},"why-base-conversion-matters-in-programming","Why Base Conversion Matters in Programming",[15,16,17],"p",{},"Every programming language stores numbers internally in binary, but developers work with decimal, hexadecimal, octal, and binary representations depending on the task. Color codes use hex. File permissions use octal. Bit masks use binary. Configuration values might arrive as hex strings from an API.",[15,19,20],{},"Knowing how to convert between bases in your language of choice — and understanding what happens under the hood — prevents subtle bugs like integer overflow, string formatting errors, and silent truncation.",[10,22,24],{"id":23},"built-in-conversion-functions","Built-in Conversion Functions",[15,26,27],{},"Most languages provide built-in support for common base conversions. Here's a quick reference:",[29,30,31,50],"table",{},[32,33,34],"thead",{},[35,36,37,41,44,47],"tr",{},[38,39,40],"th",{},"Language",[38,42,43],{},"Decimal → Hex",[38,45,46],{},"Decimal → Binary",[38,48,49],{},"Hex → Decimal",[51,52,53,75,95,115,135],"tbody",{},[35,54,55,59,65,70],{},[56,57,58],"td",{},"Python",[56,60,61],{},[62,63,64],"code",{},"hex(n)",[56,66,67],{},[62,68,69],{},"bin(n)",[56,71,72],{},[62,73,74],{},"int(s, 16)",[35,76,77,80,85,90],{},[56,78,79],{},"JavaScript",[56,81,82],{},[62,83,84],{},"n.toString(16)",[56,86,87],{},[62,88,89],{},"n.toString(2)",[56,91,92],{},[62,93,94],{},"parseInt(s, 16)",[35,96,97,100,105,110],{},[56,98,99],{},"Java",[56,101,102],{},[62,103,104],{},"Integer.toHexString(n)",[56,106,107],{},[62,108,109],{},"Integer.toBinaryString(n)",[56,111,112],{},[62,113,114],{},"Integer.parseInt(s, 16)",[35,116,117,120,125,130],{},[56,118,119],{},"Go",[56,121,122],{},[62,123,124],{},"fmt.Sprintf(\"%x\", n)",[56,126,127],{},[62,128,129],{},"fmt.Sprintf(\"%b\", n)",[56,131,132],{},[62,133,134],{},"strconv.ParseInt(s, 16, 0)",[35,136,137,140,145,150],{},[56,138,139],{},"Rust",[56,141,142],{},[62,143,144],{},"format!(\"{:x}\", n)",[56,146,147],{},[62,148,149],{},"format!(\"{:b}\", n)",[56,151,152],{},[62,153,154],{},"u32::from_str_radix(s, 16)",[156,157,58],"h3",{"id":158},"python",[15,160,161,162,165,166,169],{},"Python makes base conversion straightforward with ",[62,163,164],{},"int()"," and ",[62,167,168],{},"toString()"," variants:",[171,172,176],"pre",{"className":173,"code":174,"language":158,"meta":175,"style":175},"language-python shiki shiki-themes github-light github-dark","# Parse any base to decimal\nint('FF', 16)    # 255\nint('377', 8)    # 255\nint('11111111', 2)  # 255\n\n# Decimal to other bases (returns string with prefix)\nhex(255)   # '0xff'\noct(255)   # '0o377'\nbin(255)   # '0b11111111'\n\n# Format without prefix\nformat(255, 'x')  # 'ff'\nformat(255, 'b')  # '11111111'\n","",[62,177,178,186,192,198,204,211,217,223,229,235,240,246,252],{"__ignoreMap":175},[179,180,183],"span",{"class":181,"line":182},"line",1,[179,184,185],{},"# Parse any base to decimal\n",[179,187,189],{"class":181,"line":188},2,[179,190,191],{},"int('FF', 16)    # 255\n",[179,193,195],{"class":181,"line":194},3,[179,196,197],{},"int('377', 8)    # 255\n",[179,199,201],{"class":181,"line":200},4,[179,202,203],{},"int('11111111', 2)  # 255\n",[179,205,207],{"class":181,"line":206},5,[179,208,210],{"emptyLinePlaceholder":209},true,"\n",[179,212,214],{"class":181,"line":213},6,[179,215,216],{},"# Decimal to other bases (returns string with prefix)\n",[179,218,220],{"class":181,"line":219},7,[179,221,222],{},"hex(255)   # '0xff'\n",[179,224,226],{"class":181,"line":225},8,[179,227,228],{},"oct(255)   # '0o377'\n",[179,230,232],{"class":181,"line":231},9,[179,233,234],{},"bin(255)   # '0b11111111'\n",[179,236,238],{"class":181,"line":237},10,[179,239,210],{"emptyLinePlaceholder":209},[179,241,243],{"class":181,"line":242},11,[179,244,245],{},"# Format without prefix\n",[179,247,249],{"class":181,"line":248},12,[179,250,251],{},"format(255, 'x')  # 'ff'\n",[179,253,255],{"class":181,"line":254},13,[179,256,257],{},"format(255, 'b')  # '11111111'\n",[15,259,260],{},"For bases beyond 16, you need a custom function — Python doesn't include one.",[156,262,79],{"id":263},"javascript",[15,265,266,267,270,271,274],{},"JavaScript uses ",[62,268,269],{},"toString(radix)"," for output and ",[62,272,273],{},"parseInt(string, radix)"," for input:",[171,276,279],{"className":277,"code":278,"language":263,"meta":175,"style":175},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Decimal to other bases\n(255).toString(16)  \u002F\u002F 'ff'\n(255).toString(8)   \u002F\u002F '377'\n(255).toString(2)   \u002F\u002F '11111111'\n\n\u002F\u002F Other bases to decimal\nparseInt('ff', 16)    \u002F\u002F 255\nparseInt('377', 8)    \u002F\u002F 255\nparseInt('11111111', 2)  \u002F\u002F 255\n",[62,280,281,287,315,336,356,360,365,387,404],{"__ignoreMap":175},[179,282,283],{"class":181,"line":182},[179,284,286],{"class":285},"sJ8bj","\u002F\u002F Decimal to other bases\n",[179,288,289,293,297,300,304,306,309,312],{"class":181,"line":188},[179,290,292],{"class":291},"sVt8B","(",[179,294,296],{"class":295},"sj4cs","255",[179,298,299],{"class":291},").",[179,301,303],{"class":302},"sScJk","toString",[179,305,292],{"class":291},[179,307,308],{"class":295},"16",[179,310,311],{"class":291},")  ",[179,313,314],{"class":285},"\u002F\u002F 'ff'\n",[179,316,317,319,321,323,325,327,330,333],{"class":181,"line":194},[179,318,292],{"class":291},[179,320,296],{"class":295},[179,322,299],{"class":291},[179,324,303],{"class":302},[179,326,292],{"class":291},[179,328,329],{"class":295},"8",[179,331,332],{"class":291},")   ",[179,334,335],{"class":285},"\u002F\u002F '377'\n",[179,337,338,340,342,344,346,348,351,353],{"class":181,"line":200},[179,339,292],{"class":291},[179,341,296],{"class":295},[179,343,299],{"class":291},[179,345,303],{"class":302},[179,347,292],{"class":291},[179,349,350],{"class":295},"2",[179,352,332],{"class":291},[179,354,355],{"class":285},"\u002F\u002F '11111111'\n",[179,357,358],{"class":181,"line":206},[179,359,210],{"emptyLinePlaceholder":209},[179,361,362],{"class":181,"line":213},[179,363,364],{"class":285},"\u002F\u002F Other bases to decimal\n",[179,366,367,370,372,376,379,381,384],{"class":181,"line":219},[179,368,369],{"class":302},"parseInt",[179,371,292],{"class":291},[179,373,375],{"class":374},"sZZnC","'ff'",[179,377,378],{"class":291},", ",[179,380,308],{"class":295},[179,382,383],{"class":291},")    ",[179,385,386],{"class":285},"\u002F\u002F 255\n",[179,388,389,391,393,396,398,400,402],{"class":181,"line":225},[179,390,369],{"class":302},[179,392,292],{"class":291},[179,394,395],{"class":374},"'377'",[179,397,378],{"class":291},[179,399,329],{"class":295},[179,401,383],{"class":291},[179,403,386],{"class":285},[179,405,406,408,410,413,415,417,419],{"class":181,"line":231},[179,407,369],{"class":302},[179,409,292],{"class":291},[179,411,412],{"class":374},"'11111111'",[179,414,378],{"class":291},[179,416,350],{"class":295},[179,418,311],{"class":291},[179,420,386],{"class":285},[15,422,423,427,428,431,432,435,436,438],{},[424,425,426],"strong",{},"Caveat",": ",[62,429,430],{},"parseInt('08')"," returns ",[62,433,434],{},"0"," in older JavaScript engines because it interpreted the leading ",[62,437,434],{}," as octal. Always pass the radix explicitly.",[156,440,99],{"id":441},"java",[15,443,444,445,165,448,451],{},"Java provides ",[62,446,447],{},"Integer",[62,449,450],{},"Long"," class methods:",[171,453,456],{"className":454,"code":455,"language":441,"meta":175,"style":175},"language-java shiki shiki-themes github-light github-dark","\u002F\u002F Decimal to other bases\nInteger.toHexString(255)    \u002F\u002F \"ff\"\nInteger.toOctalString(255)  \u002F\u002F \"377\"\nInteger.toBinaryString(255) \u002F\u002F \"11111111\"\n\n\u002F\u002F Other bases to decimal\nInteger.parseInt(\"ff\", 16)    \u002F\u002F 255\nInteger.parseInt(\"377\", 8)    \u002F\u002F 255\nInteger.parseInt(\"11111111\", 2)  \u002F\u002F 255\n",[62,457,458,462,467,472,477,481,485,490,495],{"__ignoreMap":175},[179,459,460],{"class":181,"line":182},[179,461,286],{},[179,463,464],{"class":181,"line":188},[179,465,466],{},"Integer.toHexString(255)    \u002F\u002F \"ff\"\n",[179,468,469],{"class":181,"line":194},[179,470,471],{},"Integer.toOctalString(255)  \u002F\u002F \"377\"\n",[179,473,474],{"class":181,"line":200},[179,475,476],{},"Integer.toBinaryString(255) \u002F\u002F \"11111111\"\n",[179,478,479],{"class":181,"line":206},[179,480,210],{"emptyLinePlaceholder":209},[179,482,483],{"class":181,"line":213},[179,484,364],{},[179,486,487],{"class":181,"line":219},[179,488,489],{},"Integer.parseInt(\"ff\", 16)    \u002F\u002F 255\n",[179,491,492],{"class":181,"line":225},[179,493,494],{},"Integer.parseInt(\"377\", 8)    \u002F\u002F 255\n",[179,496,497],{"class":181,"line":231},[179,498,499],{},"Integer.parseInt(\"11111111\", 2)  \u002F\u002F 255\n",[15,501,502,503,165,506,509],{},"For arbitrary bases (2–36), use ",[62,504,505],{},"Integer.toString(n, radix)",[62,507,508],{},"Integer.parseInt(s, radix)",".",[10,511,513],{"id":512},"writing-a-manual-base-converter","Writing a Manual Base Converter",[15,515,516],{},"Understanding the algorithm helps you handle cases built-in functions don't cover — like bases above 36 or custom digit sets.",[156,518,520],{"id":519},"decimal-to-any-base","Decimal to Any Base",[15,522,523],{},"Divide by the target base repeatedly and collect remainders:",[171,525,527],{"className":173,"code":526,"language":158,"meta":175,"style":175},"def to_base(n, base):\n    if n == 0:\n        return '0'\n    digits = '0123456789abcdefghijklmnopqrstuvwxyz'\n    result = ''\n    while n > 0:\n        result = digits[n % base] + result\n        n \u002F\u002F= base\n    return result\n\nto_base(255, 16)  # 'ff'\nto_base(255, 2)   # '11111111'\nto_base(255, 36)  # '73'\n",[62,528,529,534,539,544,549,554,559,564,569,574,578,583,588],{"__ignoreMap":175},[179,530,531],{"class":181,"line":182},[179,532,533],{},"def to_base(n, base):\n",[179,535,536],{"class":181,"line":188},[179,537,538],{},"    if n == 0:\n",[179,540,541],{"class":181,"line":194},[179,542,543],{},"        return '0'\n",[179,545,546],{"class":181,"line":200},[179,547,548],{},"    digits = '0123456789abcdefghijklmnopqrstuvwxyz'\n",[179,550,551],{"class":181,"line":206},[179,552,553],{},"    result = ''\n",[179,555,556],{"class":181,"line":213},[179,557,558],{},"    while n > 0:\n",[179,560,561],{"class":181,"line":219},[179,562,563],{},"        result = digits[n % base] + result\n",[179,565,566],{"class":181,"line":225},[179,567,568],{},"        n \u002F\u002F= base\n",[179,570,571],{"class":181,"line":231},[179,572,573],{},"    return result\n",[179,575,576],{"class":181,"line":237},[179,577,210],{"emptyLinePlaceholder":209},[179,579,580],{"class":181,"line":242},[179,581,582],{},"to_base(255, 16)  # 'ff'\n",[179,584,585],{"class":181,"line":248},[179,586,587],{},"to_base(255, 2)   # '11111111'\n",[179,589,590],{"class":181,"line":254},[179,591,592],{},"to_base(255, 36)  # '73'\n",[156,594,596],{"id":595},"any-base-to-decimal","Any Base to Decimal",[15,598,599],{},"Multiply each digit by its place value and sum:",[171,601,603],{"className":173,"code":602,"language":158,"meta":175,"style":175},"def from_base(s, base):\n    digits = '0123456789abcdefghijklmnopqrstuvwxyz'\n    result = 0\n    for char in s.lower():\n        result = result * base + digits.index(char)\n    return result\n\nfrom_base('ff', 16)    # 255\nfrom_base('11111111', 2)  # 255\n",[62,604,605,610,614,619,624,629,633,637,642],{"__ignoreMap":175},[179,606,607],{"class":181,"line":182},[179,608,609],{},"def from_base(s, base):\n",[179,611,612],{"class":181,"line":188},[179,613,548],{},[179,615,616],{"class":181,"line":194},[179,617,618],{},"    result = 0\n",[179,620,621],{"class":181,"line":200},[179,622,623],{},"    for char in s.lower():\n",[179,625,626],{"class":181,"line":206},[179,627,628],{},"        result = result * base + digits.index(char)\n",[179,630,631],{"class":181,"line":213},[179,632,573],{},[179,634,635],{"class":181,"line":219},[179,636,210],{"emptyLinePlaceholder":209},[179,638,639],{"class":181,"line":225},[179,640,641],{},"from_base('ff', 16)    # 255\n",[179,643,644],{"class":181,"line":231},[179,645,646],{},"from_base('11111111', 2)  # 255\n",[10,648,650],{"id":649},"common-pitfalls","Common Pitfalls",[156,652,654],{"id":653},"case-sensitivity","Case Sensitivity",[15,656,657,658,661,662,665],{},"Hex strings may arrive uppercase (",[62,659,660],{},"FF",") or lowercase (",[62,663,664],{},"ff","). Always normalize case before parsing, or use case-insensitive comparison.",[156,667,669],{"id":668},"zero-prefix-ambiguity","Zero Prefix Ambiguity",[15,671,672,673,675,676,679],{},"A leading ",[62,674,434],{}," can mean octal or just be a zero-padded decimal. In Python 3, ",[62,677,678],{},"0123"," is a syntax error. In older JavaScript, it parsed as octal. Always use explicit radix parameters.",[156,681,683],{"id":682},"negative-numbers","Negative Numbers",[15,685,686,688,689,431,692,695],{},[62,687,269],{}," in JavaScript produces a signed representation for negative numbers: ",[62,690,691],{},"(-255).toString(16)",[62,693,694],{},"'-ff'",". If you're working with two's complement representations, you need manual bit masking.",[156,697,699],{"id":698},"floating-point-precision","Floating-Point Precision",[15,701,702,703,706,707,710],{},"Built-in functions work with integers. Converting large floating-point numbers between bases introduces precision loss. Use ",[62,704,705],{},"BigInt"," (JavaScript) or ",[62,708,709],{},"decimal"," (Python) for large values.",[10,712,714],{"id":713},"arbitrary-bases-beyond-36","Arbitrary Bases Beyond 36",[15,716,717],{},"Most built-in converters max out at base 36 (0–9, a–z). For higher bases, extend the digit set:",[171,719,721],{"className":173,"code":720,"language":158,"meta":175,"style":175},"def to_base62(n):\n    \"\"\"Base62: 0-9, a-z, A-Z — common for URL shorteners.\"\"\"\n    digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n    if n == 0:\n        return '0'\n    result = ''\n    while n > 0:\n        result = digits[n % 62] + result\n        n \u002F\u002F= 62\n    return result\n",[62,722,723,728,733,738,742,746,750,754,759,764],{"__ignoreMap":175},[179,724,725],{"class":181,"line":182},[179,726,727],{},"def to_base62(n):\n",[179,729,730],{"class":181,"line":188},[179,731,732],{},"    \"\"\"Base62: 0-9, a-z, A-Z — common for URL shorteners.\"\"\"\n",[179,734,735],{"class":181,"line":194},[179,736,737],{},"    digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'\n",[179,739,740],{"class":181,"line":200},[179,741,538],{},[179,743,744],{"class":181,"line":206},[179,745,543],{},[179,747,748],{"class":181,"line":213},[179,749,553],{},[179,751,752],{"class":181,"line":219},[179,753,558],{},[179,755,756],{"class":181,"line":225},[179,757,758],{},"        result = digits[n % 62] + result\n",[179,760,761],{"class":181,"line":231},[179,762,763],{},"        n \u002F\u002F= 62\n",[179,765,766],{"class":181,"line":237},[179,767,573],{},[15,769,770],{},"Base62 is popular for URL shortening and unique ID generation because it produces compact, URL-safe strings.",[10,772,774],{"id":773},"key-takeaways","Key Takeaways",[776,777,778,782,789,792,795,798],"ul",{},[779,780,781],"li",{},"Most languages have built-in functions for common bases (2, 8, 10, 16) — learn them before writing custom code",[779,783,784,785,788],{},"Always pass the radix explicitly to ",[62,786,787],{},"parseInt()"," and similar functions to avoid ambiguity",[779,790,791],{},"Manual conversion algorithms (divide-and-collect, multiply-and-sum) work for any base up to your digit set size",[779,793,794],{},"Watch out for case sensitivity, zero-prefix ambiguity, negative number handling, and floating-point precision",[779,796,797],{},"For bases above 36, extend the digit set with uppercase letters or custom characters",[779,799,800],{},"Understand the algorithm even if you use built-in functions — it helps debug edge cases",[10,802,804],{"id":803},"related-guides","Related Guides",[776,806,807,814,820],{},[779,808,809],{},[810,811,813],"a",{"href":812},"\u002Fguides\u002Fnumber-systems-explained","Number Systems Explained",[779,815,816],{},[810,817,819],{"href":818},"\u002Fguides\u002Fhexadecimal-guide","Hexadecimal Guide",[779,821,822],{},[810,823,825],{"href":824},"\u002Fguides\u002Fbinary-number-system","Binary Number System",[10,827,829],{"id":828},"try-it-yourself","Try It Yourself",[15,831,832,833,837],{},"Convert between any number base instantly with our free ",[810,834,836],{"href":835},"\u002Ftools\u002Fnumber-base","Number Base Converter",". Enter a value in decimal, binary, octal, or hex and see all conversions at once.",[839,840,841],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":175,"searchDepth":188,"depth":188,"links":843},[844,845,850,854,860,861,862,863],{"id":12,"depth":188,"text":13},{"id":23,"depth":188,"text":24,"children":846},[847,848,849],{"id":158,"depth":194,"text":58},{"id":263,"depth":194,"text":79},{"id":441,"depth":194,"text":99},{"id":512,"depth":188,"text":513,"children":851},[852,853],{"id":519,"depth":194,"text":520},{"id":595,"depth":194,"text":596},{"id":649,"depth":188,"text":650,"children":855},[856,857,858,859],{"id":653,"depth":194,"text":654},{"id":668,"depth":194,"text":669},{"id":682,"depth":194,"text":683},{"id":698,"depth":194,"text":699},{"id":713,"depth":188,"text":714},{"id":773,"depth":188,"text":774},{"id":803,"depth":188,"text":804},{"id":828,"depth":188,"text":829},"2026-05-28","Learn how to convert between number bases in Python, JavaScript, Java, and more — with built-in functions and manual algorithms.","md",{"immutable":209},"\u002Fguides\u002Fbase-conversion-programming-languages",{"title":5,"description":865},"guides\u002Fbase-conversion-programming-languages","JfnR_7W0XfZwvBg7tBEkm9fqmcYPdpjIMmUwRVr-qTg",1780401331586]