2016-05-30 64 views
0

我需要比較drools中的兩個十六進制值。如何比較drools中的兩個十六進制值

的如:與0xbadf00e

這比較0xbadf00d應該導致錯誤的de匹配。 所以我的問題是,可以將hex作爲字符串值進行處理,並且可以進行相同的比較,或者有其他方法。

我試過谷歌搜索,但沒有用。

+0

什麼類型的,你目前正在使用您的模型來保存這些值? –

+0

實際上,它是來自網頁的輸入,它將是一個json對象,並且可以轉換爲字符串或長數組。 – piyushj

+0

關於你今天已經刪除的問題:*不需要發佈*完整的項目*。所有你需要的是足以重現問題的代碼。是的,這可能意味着*你的*方面多一點工作,而不僅僅是一些隨機行的複製 - 但不要指望我或其他人爲你做這項工作。 – laune

回答

1

使用ASCII碼時,digits and letters of an HEX的自然順序是遞增的。這使得將這些值作爲字符串平凡(假設它們用0填充並使用相同大小寫)進行比較。

舉個例子,如果你有一個Input類類型的hex屬性String你可以寫這樣的事情:

rule "Test" 
when 
    $i1: Input() 
    $i2: Input(hex > $i1.hex) 
then 
    //Do whatever you need here 
end 

希望它能幫助,

+0

這是否意味着,在比較它們時,我可以使用'substring()','isuppercase()'等所有字符串函數? – piyushj

+1

我建議你暫時忘記Drools,然後專注於比較Java中的值。一旦你測試了比較結果如預期的那樣,那麼你可以轉移到Drools。 –