2014-02-26 57 views
1

我正在用Groovy lang丟掉我的頭髮,它已經連續4天毀了我,並且它正在計數。groovy,字符串拒絕是一個bigInt,是奇數而不是

我需要做的是執行一個外部進程,讀取stdout,獲取該值並將其轉換爲大整數。我有什麼

def str ='openssl x509 -in "'+ file + '" -serial -noout'  
def command = "cmd /c " + str; 
def proc = command.execute(); 
proc.waitFor(); 
def response = "${proc.in.text}" 
def result = response.split('=')[1] 
log.info result 
// outputs: 7434F30AEE5F2001530C7F0C4844E9EE 
log.info result.class.name 
// outputs: java.lang.String 

好吧,非常酷,讓我們去上:

def big = new BigInteger(result.decodeHex()) 

不 - 不,不能這樣做:

java.lang.NumberFormatException:奇數個字符在十六進制字符串

與此同時,在另一個腳本:

def numb = '7434F30AEE5F2001530C7F0C4844E9EE' 
log.info numb.class.name 
// outputs : java.lang.String 
b = new BigInteger(numb.decodeHex()) 
log.info b 
// outputs : 154465376439281796222583609645190146542 

回答

4

你應該修剪result從空格,換行和類似的東西 - 而在此之後,打印出的字符數在這個字符串,如果他們甚至或靜止奇。

+0

我很傷心,說明太簡單了 –

+2

@Erki如果你在做Smutje建議後仍然有問題,那麼可能奇數是1,單字符字符串被自動轉換爲字符您使用的一種「Groovy默認方法」。你的旅程看起來很像我在4到6年前經歷過的,當時我使用了Codehaus Groovy,儘管我的頭髮可能會減少。 –

+0

是的,事情是,我在SoapUI中開發,並沒有太多可用的調試選項。 –

相關問題