如何将8位二进制数据转换为十六进制

时间:2015-02-23 12:01:45

标签: php data-conversion

print_r(bin2hex("11111111"));
echo '</br>';
print_r(bindec("11111111"));

结果

  • 131313131313131
  • 255
  

我想要一个十六进制的16字节值来进行加密。如何在php中发生从二进制到十六进制的转换。我使用函数得到了不正确的值。当我将十六进制值的数组转换为字符串字节长度时变化

3 个答案:

答案 0 :(得分:1)

你得到了正确的结果,这不是你想要的。 bin2hex()返回十六进制表示的ASCII字符串。手册中的引用:

  

返回包含str。

的十六进制表示的 ASCII字符串

所以如果你想要十六进制数,你可以使用它:

print_r(dechex(bindec("11111111")));

答案 1 :(得分:1)

获取十六进制的转换器是dechex(),但它需要一个十进制数。为此,我们首先使用bindec()将二进制字符串转换为十进制数字,然后将其传递给dechex(),ep>

print_r(dechex(bindec("11111111")));

答案 2 :(得分:1)

<?php
$str = "Hello world!";
echo bin2hex($str) . "<br>";
echo pack("H*",bin2hex($str)) . "<br>";
?>

PHP.NET手册: http://php.net/manual/en/function.bin2hex.php

测试结果 http://www.cs.princeton.edu/courses/archive/fall07/cos109/bc.html

详细说明: http://www.computerhope.com/binhex.htm

它只是9 * 16 + F,其中F是15(字母A到F代表10到15)。换句话说,0x9F是159。

与314,159的数字没有什么不同:

  3 * 100,000 (10^5, "to the power of", not "xor")
+ 1 *  10,000 (10^4)
+ 4 *   1,000 (10^3)
+ 1 *     100 (10^2)
+ 5 *      10 (10^1)
+ 9 *       1 (10^0)
for decimal (base 10).

这样一个号码的签名就像那里的“一级”。无符号值159(以8位为单位)确实是负数,但只有在将其解释为1时才会使用。