2012-11-21 14 views
7

हेक्साडेसिमल संख्या को हेक्साडेसिमल संख्याओं के साथ शैल में कैसे तुलना करें?हेक्साडेसिमल संख्याओं की तुलना शैल में हेक्साडेसिमल संख्याओं से कैसे करें?

+1

आप क्या मतलब है? क्या आप "0xdead" को "डीएड" या "57005" के बराबर होना चाहते हैं? अधिक जानकारी की आवश्यकता है। –

+1

और जो भी आपने अभी तक प्रयास किया है उसे शामिल करें। सौभाग्य। – shellter

+0

वास्तव में इस तरह लिख रहा हूँ .... अगर परीक्षण $ 1 -eq "00" जहां $ 1 हेक्साडेसिमल मान है। – bd1257

उत्तर

6

कम से कम bash हेक्साडेसिमल पूर्णांकों सीधे समर्थन करता है, बशर्ते कि वे 0x लगी होती हैं:

$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no 
no 
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no 
yes 

तुम बस तुलना ऑपरेटरों सामान्य रूप से उपयोग ...

+0

हे मुझे एक और संदेह है: यह जांचने के लिए कि इनपुट संख्या या स्ट्रिंग है या नहीं? – bd1257

0

कैसे

के बारे में
(("$answer" == 0x42)) 
echo $? 

answer=0xDEADCAFE 
(("$answer" == 0xDEADCAFE)) 
echo $? 
+0

ए, बी, सी, डी, ई, एफ के बारे में क्या? – bd1257

+0

@ user1812956 ठीक काम करना चाहिए – cnicutar

0

दरअसल @ थकला उत्तर केवल 0x7fffffffffffffff (LLONG_MAX) से अधिक संख्याओं के लिए काम करेगा:

$ [[ 0xa000000000000000 -lt 0x6000000000000000 ]] && echo -1                                              
-1 
$ [[ 0xa00000000000000 -lt 0x600000000000000 ]] && echo -1 || echo 1 
1 

आप gdb इस्तेमाल कर सकते हैं अधिक से अधिक तो LLONG_MAX नंबर के लिए, लेकिन यह निश्चित रूप से धीमी काम करता होगा:

function cmp()                                
{                                   
    gdb -ex "p ${1}ULL == ${2}ULL ? 0 : (${1}ULL < ${2}ULL ? -1 : 1)" -batch |& grep '^$1' | cut -d' ' -f3                                          
} 

$ cmp 0xa000000000000000 0x6000000000000000 
1 
$ cmp 0xa00000000000000 0x600000000000000 
1 
+0

असल में @ थकला उत्तर केवल 0x7fffffffffffffff (LLONG_MAX) से अधिक संख्याओं के लिए काम करेगा। एलएलओएन_एमएक्स से अधिक संख्या के लिए आप जीडीबी का उपयोग कर सकते हैं, लेकिन यह निश्चित रूप से धीमा काम करेगा। (देखें कि अच्छी तरह से इस जानकारी के जवाब में, यह जानकारी कितनी अच्छी तरह से नहीं है, ** ** टिप्पणी ** में फिट बैठती है।) (अभी भी 300 वर्ण शेष हैं) –

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