【问题标题】:Non ASCII char in PHP?PHP中的非ASCII字符?
【发布时间】:2010-10-18 20:12:06
【问题描述】:

我正在尝试使用 PHP 向串口 (r232) 发送一些东西。 我正在使用这个类:http://www.phpclasses.org/browse/package/3679.html

问题是我只能发送 1 个字节。 但如果我发送类似“1”的内容,我实际上发送的是 49(ASCII 表示 1)。 我尝试使用 send(1) 而不是 send("1"),但这并不好,因为这是具有 2 个字节的整数。 那么有没有办法发送一个“真正的”字符,而不是 ASCII 等价物?

【问题讨论】:

  • 我觉得 PHP 可能不是最好的语言,我做了一些研究,但一无所获。
  • 没有“真正的人物”。计算机只理解 0 和 1,而不理解“A”、“B”或“C”。 (请阅读Joel Spolskys nice but way too long Unicode article的第一部分。它将非常详细地解释字符集。)

标签: php serial-port char ascii


【解决方案1】:

chr() 函数返回一个由对应的 ascii 字符的整数给出的字符。

【讨论】:

  • 它返回一个字符,但是作为一个 PHP 字符串。这对 OP 没有帮助
  • 更准确地说:chr 将整数转换为字节。
【解决方案2】:

看起来库需要字符作为输入。如果您需要发送编码为0x01 的字符,您只需发送“\001”。函数 chr() 会将字符转换为整数值,在这里没有用。

还有一点:整数的字节大小取决于底层系统,多为4字节。

【讨论】:

  • 不是这样。 ord() 将字符转换为整数值,而 chr() 则相反。
【解决方案3】:

我不确定您要完成什么。您是否尝试发送整数 1?不熟悉该类,您是否尝试仅给出值 1 作为参数?如果这不起作用,请尝试使用 chr() 函数将其包装起来。

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 2014-06-12
    • 1970-01-01
    • 2012-01-23
    • 2012-12-31
    • 2013-06-19
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多