php到unity如何传递byte[]或二进制数据

本文关键字:二进制 数据 byte unity 何传递 php | 更新日期: 2023-09-27 18:00:36

我正在进行一个C#统一项目。我有一些对象想要保存在php服务器上。

因此,首先我将它们序列化为json,然后压缩它们并上传到服务器,这将它保存在数据库中(作为二进制,字符串是否足够好?)。

现在我想取回关于团结的数据。php应该如何返回值?团结应该如何接受它?

我将处理解压缩和反序列化为json。(对json使用jsonfx,并使用用c#编写的压缩方法)这部分很好用。

我只需要能够在每个平台上接收相同的byte[]。

它应该看起来像这个

C#-上传数据(psuedo C#)//这部分工作得很好

wwwform myform= new wwwform ()
byte[] mybytearr = ...
wwwform.addbinary ($mybytearr);
WWW myw=    new www (url,myform)

C#-获取数据(此处需要帮助)

WWW www = > new www (url,formdata)
myinput =www.text;

PHP-将数据发送回客户端(此处需要帮助)…

$myvarbackfromthedb =.
echo $myoutput

当$myoutput是二进制数据或byte[]时,我该怎么做?

谢谢你的帮助!

更新:

因此,这样做的动机是保存压缩返回的byte[]。最后,我把它移到base64字符串,然后把它作为字符串传递给php,然后作为字符串传递到数据库。

php到unity如何传递byte[]或二进制数据

让我们从一些二进制数据开始:

$binary = file_get_contents('/tmp/foo');

或者可能用于测试目的:

$binary = join(array_map('chr', range(0, 127)));

两者都是一些任意的二进制字符串。您可以使用从中输出有效的JSON字符串

echo json_encode(array('foo' => $binary));

这会给你这样的东西:

{"foo":"'u0000'u0001'u0002'u0003'u0004'u0005'u0006'u0007'b't'n'u000b'f'r'u000e'u000f'u0010'u0011'u0012'u0013'u0014'u0015'u0016'u0017'u0018'u0019'u001a'u001b'u001c'u001d'u001e'u001f !'"#$%&'()*+,-.'/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ['']^_`abcdefghijklmnopqrstuvwxyz{|}~"}

这是该二进制数据的有效JSON表示。任何解码该数据的人都会得到二进制值。不过,您可能希望对其进行更高效的编码,例如使用Base64编码:

echo json_encode(array('foo' => base64_encode($binary)));

这会给你:

{"foo":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8="}

现在接收器只需要再次解码即可。在PHP中,它看起来像这样:

$data = json_decode($json, true);
$data['foo'] = base64_decode($data['foo']);