2010-03-01 15 views
20

दशमलव संख्याओं की एक सूची को देखते हुए, प्रत्येक संख्या को इसके समतुल्य हेक्साडेसिमल मान में कैसे परिवर्तित किया जा सकता है, और इसके विपरीत?दशमलव <-> हेक्स

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

 
(convert2hex 255 64 64); -> (FF 40 40) 
(convert2dec FF 40 40); -> (255 64 64) 

(convert2hex 255 64 64 255 64 64 128) 
(convert2dec FF 40 40 FF 40 40 80) 
+1

इस होमवर्क है? मैं जो करूँगा, वह उच्च स्तर पर एल्गोरिदम पर आधार दस से आधार सोलह को परिवर्तित करने के लिए समझ रहा है, * इससे पहले * इसे lisp में कार्यान्वित करने की कोशिश कर रहा है। –

+3

होमवर्क नहीं है। Emacs Lisp शायद किसी भी स्कूल के रडार पर नहीं है? :-) मैं कल्पना करता हूं कि वास्तविक रूपांतरण क्षमता Emacs में कहीं भी हो सकती है। अगर मैं सिर्फ एक नंबर परिवर्तित करना चाहता हूं, तो उदाहरण के लिए, मैं कैल्क का उपयोग कर सकता हूं। –

+0

जब मैं स्कूल में था तब मैंने लिस्प लिखा था। कॉलिंग कैल्क ओवरकिल की तरह लगता है, बेस रूपांतरण अलगो बुरा नहीं है। –

उत्तर

29

संख्या हेक्स के लिए:

(format "%X" 255) ;; => "FF" 

भी कर सकते हैं शून्य-पैड के साथ मूल्य:

(format "%03X" 255) ;; => "0FF" 

कहाँ 0 वर्ण का उपयोग करने के लिए है पैडिंग के लिए और पैड के लिए रिक्त स्थान की संख्या है।

हेक्स नंबर स्ट्रिंग

(string-to-number "FF" 16) ;; => 255 

16 का अर्थ है "आधार -16 के रूप में पढ़ा।"

+0

तर्क '16' को रेडिक्स कहा जाता है। – ocodo

15

तुम सिर्फ Emacs में एक हेक्साडेसिमल संख्या टाइप करने के लिए चाहते हैं, तो string-to-number कॉल करने के लिए, बस #x पाठक सिंटैक्स का उपयोग की आवश्यकता नहीं है:

#xFF 
==> 255 

तुम भी ऑक्टल अंक के लिए द्विआधारी के लिए #b, #o उपयोग कर सकते हैं, या आधार 36 के लिए #36r:

#b10011001 
==> 153 
#o777 
==> 511 
#36rHELLO 
==> 29234652 

section 3.1 Integer Basics देखें Emacs लिस्प मैनुअल में

-2

तुम भी चर *print-base* 16. करने के लिए सेट कर सकते हैं आप कर सकते हैं विश्व स्तर पर इस:

(setf *print-base* 16) (print '(10 20 30 40)) => (A 14 1E 28) 

या स्थानीय रूप से:

(let ((*print-base* 16)) (dolist (c '(10 20 30 40)) (print c))) 
=>A 
14 
1E 
28 
NIL 
+0

यह दस्तावेज कहां है ?! मुझे पता है कि यह एक _Common Lisp_ चीज है, लेकिन मुझे नहीं लगता कि यह Emacs Lisp में काम करता है। – ocodo

+0

आम लिस्प में इसे पी पर दस्तावेज किया गया है। सीएलटीएल के 55 9। आप इसे हाइपरस्पेक http://clhs.lisp.se/Body/v_pr_bas.htm में भी ढूंढ सकते हैं। Emacs Lisp के लिए, हालांकि, मुझे लगता है कि यह लागू नहीं किया जा सकता है। – Leo

+0

मुझे लगता है कि आप बिंदु खो रहे हैं। यह सवाल है EmacsLisp सीएल नहीं – ocodo

संबंधित मुद्दे