2014-01-22 80 views
0

我在Java中有此代碼,我希望將其轉換爲PHP。它可能與從ASCII轉換爲二進制,然後轉換爲十六進制相關,但我不太確定自己。請有人幫忙嗎?將Java代碼轉換爲php - 也許大約十六進制爲二進制

String clearKey = "test"; 
char [] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; 
byte [] bytes = clearKey.getBytes(); 
String keyId = ""; 
for (int i = 0 ; i < clearKey.length() ; i ++) { 
    keyId = keyId + hexArray[(bytes[i] & 0xFF)/16] + hexArray[(bytes[i] & 0xFF) % 16]; 
} 
System.out.println(keyId); 

這是我走到這一步:

代碼的第二行或許可以被轉換成這樣:

$bytes = bin2hex($clearKey); 

但我不知道下面的等價代碼在PHP:

hexArray[(bytes[i] & 0xFF)/16] + hexArray[(bytes[i] & 0xFF) % 16]; 

其他信息

我將此代碼轉換爲正確的Java語法。

+1

這不是Ruby代碼,它看起來有點像Java的。 –

+0

@ p11y直到for/next循環中缺少括號的地方,但我確信它是Java,否則 –

+0

@owlstead是的,代碼中有一些錯誤。例如,也沒有稱爲「字節」的類型,作者可能是指「字節」。但是,數組符號和'getBytes()'立即讓我想到了Java。 –

回答

1

這是一個使用查表的十六進制編碼器。它使用默認字符編碼的平臺將字符串轉換爲字節。然後它將這些字節轉換爲十六進制。您提問的行計算字節高4位和低4位的十六進制數字。因此整行將一個字節編碼爲兩個十六進制字符。

的PHP相當於這個Java代碼

$keyId = unpack('H*', $clearKey)[1]; 
+0

@owlstead感謝有用的補充。 –

+0

嘗試了這一點,但結果是不同的,有無論如何,你可以提供一個證據,證明代碼在我的問題中顯示類似的Java? – jaycode

+0

上面沒有我的評論,我在這裏創建:Java:http://ideone.com/MZ4TLH Php:http://ideone.com/VDYWRs – jaycode

相關問題