हेक्साडेसिमल संख्या को हेक्साडेसिमल संख्याओं के साथ शैल में कैसे तुलना करें?हेक्साडेसिमल संख्याओं की तुलना शैल में हेक्साडेसिमल संख्याओं से कैसे करें?
उत्तर
कम से कम bash
हेक्साडेसिमल पूर्णांकों सीधे समर्थन करता है, बशर्ते कि वे 0x
लगी होती हैं:
$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no
no
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no
yes
तुम बस तुलना ऑपरेटरों सामान्य रूप से उपयोग ...
हे मुझे एक और संदेह है: यह जांचने के लिए कि इनपुट संख्या या स्ट्रिंग है या नहीं? – bd1257
दरअसल @ थकला उत्तर केवल 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
असल में @ थकला उत्तर केवल 0x7fffffffffffffff (LLONG_MAX) से अधिक संख्याओं के लिए काम करेगा। एलएलओएन_एमएक्स से अधिक संख्या के लिए आप जीडीबी का उपयोग कर सकते हैं, लेकिन यह निश्चित रूप से धीमा काम करेगा। (देखें कि अच्छी तरह से इस जानकारी के जवाब में, यह जानकारी कितनी अच्छी तरह से नहीं है, ** ** टिप्पणी ** में फिट बैठती है।) (अभी भी 300 वर्ण शेष हैं) –
आप क्या मतलब है? क्या आप "0xdead" को "डीएड" या "57005" के बराबर होना चाहते हैं? अधिक जानकारी की आवश्यकता है। –
और जो भी आपने अभी तक प्रयास किया है उसे शामिल करें। सौभाग्य। – shellter
वास्तव में इस तरह लिख रहा हूँ .... अगर परीक्षण $ 1 -eq "00" जहां $ 1 हेक्साडेसिमल मान है। – bd1257