在utf8类中设置ascii const

时间:2014-09-03 05:05:39

标签: php

我需要指定一些const(终结符)。

文件是UTF8编码的。

class Base {
  const PROTO = chr(2) . chr(2) . chr(3) . chr(1);
  function test($str) {
    if (substr(str,0,4) == self::PROTO) {
    ...
    }
  }
}

现在使用延迟初始化:

public function __construct() {
    $this->_proto = chr(2) . chr(2) . chr(3) . chr(1);
}

如果有可能做到这一点,那就太有趣了

1 个答案:

答案 0 :(得分:1)

您可以将它们指定为八进制表示法中的字符串,如const PROTO = "\2\2\3\1",或者您更喜欢十六进制const PROTO = "\x2\x2\x3\x1"

chr(n)的作用是返回由数字n指定的ASCII字符,该字符是十进制表示法。如果您先将n转换为八进制或十六进制,然后分别将\\x作为前缀,则可以在double-quoted string中获得相同的内容。

这里的例子中所有数字都保持不变,因为它们都在8以下,因此在所有三种符号中都有相同的数字。如果您想要一个垂直制表符,则可以将其指定为chr(11)(十进制),"\xB"(十六进制)或"\13"(八进制)。

http://www.asciitable.com/有一个方便的ASCII表,它为每个字符提供了所有三种符号。