2011-05-23 92 views
0

我有這種類型的代碼用Java編寫的:的Java 2 PHP翻譯

public static String asHex(byte[] buf) 
{ 
    StringBuilder strbuf = new StringBuilder(buf.length << 1); 
    for (byte aByte : buf) { 
     if (((int) aByte & 0xff) < 0x10) { 
      strbuf.append('0'); 
     } 
     strbuf.append(Long.toString((int) aByte & 0xff, 16)); 
    } 
    return strbuf.toString(); 
} 

這是一樣的PHP BASE64_DECODE?

回答

0

如果你有時間,找出最簡單的方法是通過你的函數和PHP函數運行一個相同的字符串,並看看他們是否出來了相同的結果。 或者,如果你真的有一些空閒時間閱讀this,看看您是否可以解決這個問題。

編輯:後一點看它似乎一個字節數組只是轉換爲十六進制字符串這是因爲你已經指出的是不base64編碼。

我認爲PHP功能相當於它做的是什麼bin2hex

+0

我沒有在Java中特別好,我只需要重寫PHP中的代碼。據我瞭解功能改變字符串整數值爲十六進制值......我猜,這不是BASE64_DECODE :) – Slavomir 2011-05-23 23:57:45

0

喜爲@詹姆斯說:BIN2HEX會做:

<?php 
$str = "Hello world!"; 
echo bin2hex($str) . "<br />"; 
?> 

會產生相同

static public void main(String args[]) { 
    String str= "Hello world!"; 
    byte[] x = str.getBytes(); 
    String s = asHex(x); 
    System.out.println (s); 
} 

public static String asHex (byte buf[]) { 
    StringBuffer strbuf = new StringBuffer(buf.length * 2); 
    int i; 
    for (i = 0; i < buf.length; i++) { 
     if (((int) buf[i] & 0xff) < 0x10) 
      strbuf.append("0"); 
     strbuf.append(Long.toString((int) buf[i] & 0xff, 16)); 
    } 
    return strbuf.toString(); 
}