[英]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.