2012-02-17 11 views
49

में पूर्णांक कनवर्ट करें मैं एक पूर्णांक से एक दूसरे को पूर्णांक में परिवर्तित करने की कोशिश कर रहा हूं, यदि हेक्स में मुद्रित है, तो मूल पूर्णांक के समान दिखाई देगा।जावा हेक्स पूर्णांक

उदाहरण के लिए:

कन्वर्ट 20 के लिए 32 (जो 0x20 है)

कन्वर्ट 54 से 84

+0

संभावित डुप्लिकेट [जावा में पूर्णांक से हेक्स मान कैसे प्राप्त करें] (http://stackoverflow.com/questions/5258415/how-to-get-hex-value-from-integer-in-java) – Vadzim

+0

I अभी एहसास हुआ है कि वास्तव में दिए गए परीक्षण मामलों को हल करने के लिए, यह ** हेक्स को int ** में परिवर्तित करना है, न कि दूसरी तरफ। हालांकि, प्रश्न शीर्षक जो "जावा कन्वर्ट इंटीजर से हेक्स इंटीजर" कहता है, ने मेरे कई और उत्तर को शामिल किया है जिसमें ** int से हेक्स ** को परिवर्तित करने के लिए सबसे ऊपर है। – Wit

उत्तर

36
public static int convert(int n) { 
    return Integer.valueOf(String.valueOf(n), 16); 
} 

public static void main(String[] args) { 
    System.out.println(convert(20)); // 32 
    System.out.println(convert(54)); // 84 
} 

है (जो 0x54 है), मूल संख्या का इलाज के रूप में अगर यह हेक्साडेसिमल में था, और फिर दशमलव में परिवर्तित करें।

+3

4 बाइट्स से स्ट्रिंग में कनवर्ट करना, फिर स्ट्रिंग से लेकर int तक और फिर हेक्स तक? जी नहीं, धन्यवाद। –

+3

यह समाधान त्रुटिपूर्ण है। निम्न को चलाने का प्रयास करें: Integer.valueOf (String.valueOf (-2115381772), 16) - यह एक संख्या FormatException देता है। – Lonzak

+0

आप भयानक –

4
String input = "20"; 
int output = Integer.parseInt(input, 16); // 32 
5

आप कुछ इस तरह (जिस तरह से आप कागज पर यह करना होगा) की कोशिश कर सकते:

public static int solve(int x){ 
    int y=0; 
    int i=0; 

    while (x>0){ 
     y+=(x%10)*Math.pow(16,i); 
     x/=10; 
     i++; 
    } 
    return y; 
} 

public static void main(String args[]){ 
    System.out.println(solve(20)); 
    System.out.println(solve(54)); 
} 

उदाहरण आप इस गणना करेंगे दे दिया है के लिए: 0 * 16^0 + 2 * 16^1 = 32 और 4 * 16^0 + 5 * 16^1 = 84

235

सबसे आसान तरीका है Integer.toHexString(int)

+3

प्रश्न पूर्णांक से पूर्णांक में परिवर्तित करना था स्ट्रिंग के लिए पूर्णांक नहीं है। कृपया प्रश्न फिर से पढ़ें। –

+34

हालांकि यह समझ में नहीं आता है, आप पूर्णांक के आंतरिक प्रतिनिधित्व को नियंत्रित नहीं कर सकते हैं। यदि आप हेक्स में कुछ चाहते हैं, तो आप परिभाषा के अनुसार _human readable_ प्रतिनिधित्व के बारे में पूछ रहे हैं। – sircodesalot

+2

@sircodesalot: प्रश्न हेक्स के रूप में मुद्रित एक निश्चित संपत्ति _if_ है, जो एक विशुद्ध गणितीय रूपांतरण है के साथ एक पूर्णांक की गणना के बारे में है। मैं जोसेफ के साथ दृढ़ता से असहमत हूं कि एक उत्तर को Google परिणामों के आधार पर सही के रूप में चिह्नित किया जाना चाहिए, लेकिन वोटों के मुताबिक, मैं अल्पसंख्यक में हूं। – Pianosaurus

1

उपयोग करने के लिए निम्नलिखित अनुकूलित है iff y है कहां केवल सकारात्मक पूर्णांक के हेक्सा प्रतिनिधित्व को मुद्रित करना चाहते हैं।

यह तेजी से चमक रहा होना चाहिए क्योंकि यह अंत में StringBuilder को वापस करने से बचने के लिए एएससीआईआई वर्णों और रिकर्सन के यूटीएफ -8 मानों का उपयोग करता है।

public static void hexa(int num) { 
    int m = 0; 
    if((m = num >>> 4) != 0) { 
     hexa(m); 
    } 
    System.out.print((char)((m=num & 0x0F)+(m<10 ? 48 : 55))); 
} 
6

int से हेक्स में परिवर्तित करने का एक वैकल्पिक तरीका।

String s = String.format("%X", num);

आप लोअरकेस के लिए x को राजधानी X बदल सकते हैं।

0

आप ऐसा करते हैं:

public static int specialNum(num){ 

    return Integer.parseInt(Integer.toString(num) ,16) 
} 

यह अपने हेक्साडेसिमल समकक्ष से किसी विशेष दशमलव पूर्णांक परिवर्तित करना चाहिए।