Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将lua十六进制函数转换为在PHP中使用_Php_Lua - Fatal编程技术网

将lua十六进制函数转换为在PHP中使用

将lua十六进制函数转换为在PHP中使用,php,lua,Php,Lua,我所面临的问题是,我试图在不使用Base64的情况下通过lua环境的post请求发送图像。我正在使用此函数将数据更改为可以在post请求中发送的内容 function string.tohex(str) return str:gsub('.', function (c) return string.format('%02X', string.byte(c)) end) end 我可以用lua把它转换回来 function string.fromhex(str

我所面临的问题是,我试图在不使用Base64的情况下通过lua环境的post请求发送图像。我正在使用此函数将数据更改为可以在post请求中发送的内容

function string.tohex(str)
    return str:gsub('.', function (c)
         return string.format('%02X', string.byte(c))
    end) 
end
我可以用lua把它转换回来

function string.fromhex(str)
    return str:gsub('..', function (cc)
        return string.char(tonumber(cc, 16))
    end)
end
作为参考,这是我将图像传递给string.tohex时返回的内容

但是我不知道如何在php中复制这个函数

编辑这是我在php中尝试将其转换回的内容

preg_replace_callback(
    '..',
    function ($matches) {
        return chr(intval($matches[0], 16));
    },
    $data
);

PHP中的模式与lua中的有点不同!您还需要提供分隔符:

preg_replace_callback(
    '/../',
    function ($matches) {
        return chr(intval($matches[0], 16));
    },
    $data
);

这里,
/
充当分隔符。

PHP中的模式与lua中的模式有点不同!您还需要提供分隔符:

preg_replace_callback(
    '/../',
    function ($matches) {
        return chr(intval($matches[0], 16));
    },
    $data
);

这里,
/
充当分隔符。

您是否尝试过这样做?你尝试的东西有什么问题吗?我尝试编写的代码一无所获,我对php还比较陌生,我希望有人能给我指出正确的方向。你为什么要首先对它进行ASCII编码?这是一个邮寄请求。您可以发送二进制数据。发送原始字节。您是否尝试过这样做?你尝试的东西有什么问题吗?我尝试编写的代码一无所获,我对php还比较陌生,我希望有人能给我指出正确的方向。你为什么要首先对它进行ASCII编码?这是一个邮寄请求。您可以发送二进制数据。发送原始字节。