【问题标题】:Trying to convert string returned by "fread" to "base 16". PHP试图将“fread”返回的字符串转换为“base 16”。 PHP
【发布时间】:2017-06-28 21:22:42
【问题描述】:

PHP 的“fread()”函数返回的基本类型是什么,如何将这种类型转换为在屏幕上显示为 hexa?

If I do it that way:

while(!feof($resource))
{
    $contents = fread($resource, 1);
    $new = intval($contents);
    echo base_convert($new, 10, 16);
}

它只是在屏幕上打印一堆零... 为什么它和做的不一样

$contents = fread($resource, filesize($file_text));
echo bin2hex($contents);

哪个打印正常的十六进制?

【问题讨论】:

  • fread() 返回一个字符串
  • @RiggsFolly 你能看到我编辑的问题吗?
  • intval() 使用整数转换规则将类型转换为 int。它找不到字符的整数值。同时,bin2hex() 获取二进制数据(即字符)并将其转换为十六进制表示。见this example。假设您的文本文件包含数字以外的其他内容,bin2hex() 是要走的路。

标签: php


【解决方案1】:

它“不一样”,因为intval 并没有按照您的想法去做。它接受一个字符串并将其解释为一个整数。如果字符串中包含字母等,则它不是有效整数,因此intval 返回 0。

该功能用于转换例如“1234567”(字符串)到 1234567(整数)。

【讨论】:

    猜你喜欢
    • 2018-05-03
    • 2012-07-08
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多