簡體   English   中英

幫助將C ++移植到PHP代碼

[英]Help porting c++ to php code

如果可能,我需要將此功能移植到c ++:

static unsigned char bux_code[3] = {0xFC, 0xCF, 0xAB};

void bux_convert(char* buf, int size)
{
        int n = 0;
        // ----
        for (n=0;n<size;n++)
        {
                buf[n]^=bux_code[n%3];
        }
}

我做了什么:

$bux_code = array("\xFC", "\xCF", "\xAB");

function bux_convert($string)
{
    $size = strlen($string);

    for ($n = 0; $n < $size; $n++) {
        $string[$n] ^= $bux_code[$n % 3];
    }

    return $string;
}

var_dump ( bux_convert("£Ì•½Ï¼«ü") );

但是我遇到了這個錯誤:無法對重載對象或字符串使用assign-op運算符

在PHP中,不能總是處理$mystring[5]$mystring[$k]之類的字符串的偏移量,然后在各個方面都將結果字符視為數字值。 這是您可以解決的一種方法:使用str_split()bux_convert()的開頭將字符串轉換為數組,然后使用implode()在結尾將其轉換為字符串。

另外, $bux_code是全局變量,在函數內部不可見。 可以將其移動到函數內部,也可以將其聲明為全局變量。

function bux_convert($string)
{
    $bux_code = array(0xFC, 0xCF, 0xAB);

    $size = strlen($string);
    $string = array_map('ord', str_split($string));

    for ($n = 0; $n < $size; $n++) {
        $string[$n] ^= $bux_code[$n % 3];
    }

    return implode('', array_map('chr', $string));
}

var_dump ( bux_convert("£Ì•½Ï¼«ü") );

嘗試這個。

 $bux_code = array(hexdec("FC"), hexdec("CF"), hexdec("AB"));

該錯誤抱怨“ ^ =”賦值運算符。

因此,請嘗試執行錯誤消息所建議的操作,然后在不使用assign-op運算符的情況下重寫分配:

$string[$n] = $string[$n] ^ $bux_code[$n % 3];

您需要顯式將全局變量移植到該函數,因此在函數的第一行將以下行放入:

global $bux_code;

現在,找不到該變量,未對其進行聲明,因此xor不能對其進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM