2011-04-17 67 views
0

翻譯我有這樣的循環在Java中:ColdFusion的XOR從Java

for (int i = 0; i < 16; i++) { 
    data[i] ^= INIT_VECTOR[i]; 
} 

試圖轉換到ColdFusion的時候:

<cfscript> 
    for (i = 1; i < 17; i++) { 
     data[i] = data[i] XOR INIT_VECTOR[i]; 
    } 
</cfscript> 

它引發以下錯誤:

You have attempted to dereference a scalar variable of type class [B as structure with members 

請告訴我什麼是我的錯誤?

謝謝。

+1

在CF中,「data」和「INIT_VECTOR」的定義是什麼? – QuantumMechanic 2011-04-17 16:09:43

回答

3

作爲QuantumMechanic的評論,需要看看這兩個數組是如何創建的。通過簡單地聲明數組錯誤(如<cfset data = "ArrayNew(1)" />)而非<cfset data = ArrayNew(1) />的正確語法來複制該錯誤是非常容易的。

另外,您也許不想使用XOR運算符,而是使用BitXor函數。當我測試這個時,XOR返回了一個CF布爾值yes/no,你可能只想要BitXor會返回的位。

<cfscript> 
    for (i=1; i<17; i++) { 
     data[i] = BitXor(data[i], INIT_VECTOR[i]); 
    } 
</cfscript> 
+0

謝謝,非常有幫助 – Houssem 2011-04-19 11:03:13