如何比較shell中的十六進制數與十六進制數?如何比較十六進制數字與shell中的十六進制數字?
7
A
回答
6
至少bash
直接支持十六進制整數,只要它們的前綴爲0x
:
$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no
no
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no
yes
你只需要使用比較操作符通常...
+0
嘿,我還有一個疑問:如何檢查輸入是數字還是字符串? – bd1257
0
0
其實@thkala答案只適用於不超過0x7fffffffffffffff
(LLONG_MAX
)的號碼:
$ [[ 0xa000000000000000 -lt 0x6000000000000000 ]] && echo -1
-1
$ [[ 0xa00000000000000 -lt 0x600000000000000 ]] && echo -1 || echo 1
1
對於數字大於LLONG_MAX
你可以使用gdb
,但它的工作原理,當然要慢
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
其實@thkala答案只適用於不大於0x7fffffffffffffff(LLONG_MAX)的數字。對於大於LLONG_MAX的數字,您可以使用gdb,但它當然會工作得更慢。 (看看這些信息如何很好地,而不是直接回答這個問題,它適合於**評論**)(還剩下300個字符) –
相關問題
- 1. Python十六進制比較
- 2. 比較十六進制字符陣列
- 3. 比較字節到十六進制?
- 4. SQL十六進制字符串比較
- 5. 十六進制字符串到十六進制整數
- 6. python字符串與十六進制轉義十六進制值
- 7. 十六進制串&十六進制
- 8. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 9. 在C++中將十六進制十六進制字符標記爲十進制
- 10. 如何在十六進制字符數組中插入十六進制值
- 11. 如何連接十六進制數字?
- 12. 十六進制值的字符串格式爲十六進制數字排序
- 13. 將十進制轉換爲十六進制和十六進制
- 14. 如何將十六進制字符串轉換爲十六進制數
- 15. 如何轉換十六進制字符串爲十六進制數
- 16. C中的十六進制比較
- 17. 轉換十六進制字符串十六進制值
- 18. 將字符串轉換爲十六進制到十六進制
- 19. 從十六進制字符串轉換爲十六進制字符數組
- 20. 從較小數字(十六進制)中減去較大數字
- 21. 在C +/C++中查找十六進制範圍內的十六進制數字
- 22. 用於大數字的十進制到十六進制的Python
- 23. 選擇一個十六進制附近的十六進制數
- 24. 將十六進制字符串數組轉換爲十六進制數組
- 25. 十六進制
- 26. 十六進制
- 27. 十六進制
- 28. 如何將十六進制字符串轉換爲十六進制字節?
- 29. 從十六進制字符
- 30. 十六進制文字
你是什麼意思?你想讓「0xdead」等於「dEad」還是「57005」?需要更多細節。 –
,幷包括您迄今爲止所嘗試的內容。祝你好運。 – shellter
其實我是這樣寫的......如果測試$ 1 -eq「00」 其中$ 1是一個十六進制值。 – bd1257