2011-07-22 52 views
1

我想要实现的是:在PHP中的特定点编辑文件的十六进制?

我的服务器上有两个基本文件,根据用户输入根据需要进行编辑/复制。我希望能够在JavaScript中使用用户输入和PHP中的文件编辑来完成大部分工作,因为我用JavaScript更好。我需要做的是在特定点编辑文件,并根据某些用户输入字符串的长度更改十六进制值。

我已经尽我所能地做了很多事,但没有寻求帮助,但现在我确实需要它。

其中一个文件的结构方式是:三个空十六进制值,然后是一个相当于设置字符串长度的十六进制值,设置字符串,三个空十六进制值,一个等于长度的十六进制值设置的值字符串,最后是值字符串。一个例子是:

06 76 6F 6C 75 6D 65 00 00 00 02 37 38

06是“体积”的字符串的长度,

76 6F 6C 75 6D 65是“体积”的字符串,

02是值字符串的长度音量,“78”

37 38是设定值,“78”

我可以隐藏用户输入为十六进制,但我不知道如何写入十六进制文件,或以十六进制打开它,或去我需要的地方...

此外,为一些原因,000webhost不会让我上传txt文件或我需要使用的文件,那么有没有办法使用PHP文件?

最后一件事,我如何在javascript和php之间传递变量而不将它们写入html元素?

+0

for js <-> php通信在ajax请求中使用JSON,其余的我不知道,但为什么你要做复杂的十六进制版本而不是纯文本(简单的东西比较简单,KISS等)? – regilero

+0

你可以使用[pack](http://php.net/pack)和'unpack'来处理PHP中的二进制值。 –

回答

0

你不需要做任何特殊的事情来写在十六进制。只需存储您的价值并输出它,php是二进制安全的。 (不要存储字符串“76”,存储一个值为76的字符。)

然后使用各种文件命令读取和写入文件,如@ myeviltacos所说。

而你(或多或少)需要把你的变量放在html元素中来传递它们。

您有四个选项:

与隐藏要素的表格,然后提交。

使用url中的变量创建一个网址并转到该网址。

使用ajax,并执行与前两个选项相同的操作。

最后你可以使用jQuery,并让它自动为你做。使用$.ajax()并将data属性设置为您的变量。

0

您是否试图使用fopen'b'标志读取文件?这就是我在C中所做的事情。之后,您可以将数据读入数组并根据需要迭代元素。

+0

以二进制格式打开它?我想我应该明白你的意思,但我不确定。 – mowwwalker

0

信息给过去的自己(和其他人谁在这里结束了和一样困惑,因为我是):

十六进制不是一个类型的数据,而是它的一个表示。虽然十六进制编辑器和其他程序以十六进制格式显示二进制数据很有用,但在编程期间没有必要将数据转换为十六进制字符串。