为什么PHP处理二进制数据的函数没有长度参数?



为什么处理二进制数据的函数没有长度参数?我有C语言背景,所以这真的让我很困惑。我认为也许字符串对象持有的长度,但这似乎不是这样的情况(纠正我,如果我错了)。显示此行为的两个函数示例是base64_encode/decode和bin2hex。

谢谢!

php的字符串对象内部保存长度。您可以通过调用strlen来获得这个值,但是由于php具有自动管理功能,因此您很少需要担心这个问题:

echo strlen("abc"); // 5

PHP字符串不像c字符串。

我已经有一段时间没有考虑内部结构了。我记得,php变量被称为"zvals",它基本上是一个跟踪数据类型、长度和数据本身等内容的结构体。

因此在内部(至少在相当低的层次上),PHP可能会避免依赖于null终止来知道字符串的结束位置。

编辑:这是一篇旧文章,讨论了PHP中用户空间变量的一些内部实现

相关内容

  • 没有找到相关文章

最新更新