zoukankan      html  css  js  c++  java
  • Base Conversion In PHP and javascript

    http://www.exploringbinary.com/base-conversion-in-php-using-built-in-functions/

    http://www.binaryconvert.com/convert_float.html?decimal=054046056050049051

    https://www.codeproject.com/Tips/387989/Convert-Binary-Single-Precision-Value-to-Float-in

    function FloatToIEEE(f)
    {
        var buf = new ArrayBuffer(4);
        (new Float32Array(buf))[0] = f;
        return (new Uint32Array(buf))[0];
    }

    Unfortunately, this doesn't work with doubles and in old browsers

    function DoubleToIEEE(f)
    {
        var buf = new ArrayBuffer(8);
        (new Float64Array(buf))[0] = f;
        return [ (new Uint32Array(buf))[0] ,(new Uint32Array(buf))[1] ];
    }

    -------------------------------------------------------------

    The PHP programming language has many built-in functions for converting numbers from one base to another. In fact, it has so many functions that it can be hard to know which to use. Some functions have similar capabilities, and some work with parameters of different types. We’ll sort through the differences in this article, and explain the proper context in which to use each function.

    As a guide to our discussion, our mission will be to write programs that take, as input, an integer in a given base, and produce, as output, the equivalent of that integer in another base. Both the input and output will be strings — sequences of characters with encodings like ASCII or EBCDIC. That is the form numbers take when read in from and written out to a user. Contrast this with numbers that can be operated on arithmetically inside a computer, numbers represented with binary integers or floating-point binary. I call numbers in that form numeric binary.

    Why the distinction between string and numeric binary? Because both types are used in PHP’s conversion functions. Knowing which parameters are which type is key to using the functions properly.

    Summary of PHP Conversion Functions

    PHP has built-in functions that can convert, or help convert, integers between string representations in various number bases. We will use them to convert between decimal (base 10), binary (base 2), hexadecimal (base 16), and octal (base 8). These are number bases that anyone versed in binary should know.

    There’s an important point I need to make before continuing. In PHP, and just about anywhere else, functions described as converting to or from decimal really convert to or from numeric binary! If you take only one thing from this article, let that be it.

    Here is a summary of the PHP conversion functions used in this article, with a description of how they’re used, and the maximum integer they can safely convert:

    PHP Functions for Base Conversion
    FunctionType of ConversionMax Integer
    bindec() Binary string to numeric binary 253
    hexdec() Hex string to numeric binary 253
    octdec() Octal string to numeric binary 253
    intval() Base 2 to 36 string to numeric binary 231 – 1
    sscanf() Decimal, hex, or octal string to numeric binary 231 – 1
    decbin() Numeric binary to binary string 232 – 1
    dechex() Numeric binary to hex string 232 – 1
    decoct() Numeric binary to octal string 232 – 1
    strval() Numeric binary to decimal string Between 239 and 240
    sprintf() Numeric binary to decimal, binary, hex, or octal string 253
    base_convert() Base 2 to 36 string to base 2 to 36 string 253 †

    († In the base_convert() documentation, there is this warning: “base_convert() may lose precision on large numbers due to properties related to the internal ‘double’ or ‘float’ type used.” If that leaves you wanting, it did me too.)

    Conversion Code Examples

    In the following sections, I give examples of conversions between specific base pairs. Look for the specific conversion in which you’re interested.

    In the code, I use separate variables for the input string, the intermediate numeric binary value, and the output string. The separate string variables represent the I/O of a program, keeping the code independent of any particular I/O mechanism (HTML form I/O, echo, printf, etc.). The separate variables also make clearer which parameters are which type.

    The examples which use intval and sscanf limit the maximum integer that can be converted — to 231 – 1. This is the case, for example, in the code that converts from decimal to binary, even though decbin supports integers up to 232 – 1. A similar thing happens when composing the `*dec’ and `dec*’ functions. For example, hexdec followed by decbin is limited to 232 – 1 by decbin.

    The code does not label input and output strings with their base (for example, with prefixes like 0b, 0x, or 0o). The base is implied with context.

    Converting Between Decimal and Binary

    Decimal to Binary

    Here are three ways to convert a decimal string to a binary string using built-in functions:

    • Use intval to convert the decimal string to numeric binary, and then use decbinto convert the numeric binary value to a binary string:
      <?php
       $decString = "42";
       $binNumeric = intval($decString);
       $binString = decbin($binNumeric); // = "101010"
      ?>
      
    • Use sscanf to convert the decimal string to numeric binary, and then use sprintf to convert the numeric binary value to a binary string:
      <?php
       $decString = "32";
       sscanf($decString,"%d",&$binNumeric);
       $binString = sprintf ("%b",$binNumeric); // = "100000"
      ?>
      

      Note: support of the %b format specifier is nonstandard.

    • Use base_convert to convert the decimal string directly to a binary string:
      <?php
       $decString = "26";
       $binString = base_convert($decString,10,2); // = "11010"
      ?>
      

    Binary to Decimal

    Here are three ways to convert a binary string to a decimal string using built-in functions:

    • Use bindec to convert the binary string to numeric binary, and then use sprintfto convert the numeric binary value to a decimal string:
      <?php
       $binString = "11011110";
       $binNumeric = bindec($binString);
       $decString = sprintf("%.0f",$binNumeric); // = "222"
      ?>
      
    • Use intval to convert the binary string to numeric binary, and then use strvalto convert the numeric binary value to a decimal string:
      <?php
       $binString = "10100";
       $binNumeric = intval($binString,2);
       $decString = strval($binNumeric); // = "20"
      ?>
      
    • Use base_convert to convert the binary string directly to a decimal string:
      <?php
       $binString = "111000111001";
       $decString = base_convert($binString,2,10); // = "3641"
      ?>
      

    Converting Between Decimal and Hexadecimal

    Decimal to Hex

    Here are three ways to convert a decimal string to a hexadecimal string using built-in functions:

    • Use intval to convert the decimal string to numeric binary, and then use dechex to convert the numeric binary value to a hexadecimal string:
      <?php
       $decString = "42";
       $binNumeric = intval($decString);
       $hexString = dechex($binNumeric); // = "2a"
      ?>
      
    • Use sscanf to convert the decimal string to numeric binary, and then use sprintf to convert the numeric binary value to a hexadecimal string:
      <?php
       $decString = "112";
       sscanf($decString,"%d",&$binNumeric);
       $hexString = sprintf ("%x",$binNumeric); // = "70"
      ?>
      
    • Use base_convert to convert the decimal string directly to a hexadecimal string:
      <?php
       $decString = "25";
       $hexString = base_convert($decString,10,16); // = "19"
      ?>
      

    Hex to Decimal

    Here are four ways to convert a hexadecimal string to a decimal string using built-in functions:

    • Use hexdec to convert the hexadecimal string to numeric binary, and then use sprintf to convert the numeric binary value to a decimal string:
      <?php
       $hexString = "de";
       $binNumeric = hexdec($hexString);
       $decString = sprintf("%.0f",$binNumeric); // = "222"
      ?>
      
    • Use intval to convert the hexadecimal string to numeric binary, and then use strval to convert the numeric binary value to a decimal string:
      <?php
       $hexString = "14";
       $binNumeric = intval($hexString,16);
       $decString = strval($binNumeric); // = "20"
      ?>
      
    • Use sscanf to convert the hexadecimal string to numeric binary, and then use strval to convert the numeric binary value to a decimal string:
      <?php
       $hexString = "27";
       sscanf($hexString,"%x",&$binNumeric);
       $decString = strval($binNumeric); // = "39"
      ?>
      
    • Use base_convert to convert the hexadecimal string directly to a decimal string:
      <?php
       $hexString = "25";
       $decString = base_convert($hexString,16,10); // = "37"
      ?>
      

    Converting Between Decimal and Octal

    Decimal to Octal

    Here are three ways to convert a decimal string to an octal string using built-in functions:

    • Use intval to convert the decimal string to numeric binary, and then use decoctto convert the numeric binary value to an octal string:
      <?php
       $decString = "42";
       $binNumeric = intval($decString);
       $octString = decoct($binNumeric); // = "52"
      ?>
      
    • Use sscanf to convert the decimal string to numeric binary, and then use sprintf to convert the numeric binary value to an octal string:
      <?php
       $decString = "9";
       sscanf($decString,"%d",&$binNumeric);
       $octString = sprintf ("%o",$binNumeric); // = "11"
      ?>
      
    • Use base_convert to convert the decimal string directly to an octal string:
      <?php
       $decString = "25";
       $octString = base_convert($decString,10,8); // = "31"
      ?>
      

    Octal to Decimal

    Here are four ways to convert an octal string to a decimal string using built-in functions:

    • Use octdec to convert the octal string to numeric binary, and then use sprintfto convert the numeric binary value to a decimal string:
      <?php
       $octString = "77";
       $binNumeric = octdec($octString);
       $decString = sprintf("%.0f",$binNumeric); // = "63"
      ?>
      
    • Use intval to convert the octal string to numeric binary, and then use strval to convert the numeric binary value to a decimal string:
      <?php
       $octString = "14";
       $binNumeric = intval($octString ,8);
       $decString = strval($binNumeric); // = "12"
      ?>
      
    • Use sscanf to convert the octal string to numeric binary, and then use strval to convert the numeric binary value to a decimal string:
      <?php
       $octString = "14";
       sscanf($octString ,"%o",&$binNumeric);
       $decString = strval($binNumeric); // = "12"
      ?>
      
    • Use base_convert to convert the octal string directly to a decimal string:
      <?php
       $octString = "61";
       $decString = base_convert($octString,8,10); // = "49"
      ?>
      

    Converting Between Power of Two Bases

    You can use the functions above to convert between bases 2, 8, and 16 without going through decimal strings. One approach is to use base_convert; another is to compose the `*dec’ and `dec*’ functions.

    Hex to Binary

    Here are two ways to convert a hexadecimal string to a binary string using built-in functions:

    • Use hexdec to convert the hexadecimal string to numeric binary, and then use decbin to convert the numeric binary value to a binary string:
      <?php
       $hexString = "1f";
       $binNumeric = hexdec($hexString);
       $binString = decbin($binNumeric); // = "11111"
      ?>
      
    • Use base_convert to convert the hexadecimal string directly to a binary string:
      <?php
       $hexString = "ff";
       $binString = base_convert($hexString,16,2); // = "11111111"
      ?>
      

    Binary to Hex

    Here are two ways to convert a binary string to a hexadecimal string using built-in functions:

    • Use bindec to convert the binary string to numeric binary, and then use dechexto convert the numeric binary value to a hexadecimal string:
      <?php
       $binString = "10011";
       $binNumeric = bindec($binString);
       $hexString = dechex($binNumeric); // = "13"
      ?>
      
    • Use base_convert to convert the binary string directly to a hexadecimal string:
      <?php
       $binString = "1111";
       $hexString = base_convert($binString,2,16); // = "f"
      ?>
      

    Octal to Binary

    Here are two ways to convert an octal string to a binary string using built-in functions:

    • Use octdec to convert the octal string to numeric binary, and then use decbin to convert the numeric binary value to a binary string:
      <?php
       $octString = "77";
       $binNumeric = octdec($octString);
       $binString = decbin($binNumeric); // = "111111"
      ?>
      
    • Use base_convert to convert the octal string directly to a binary string:
      <?php
       $octString = "71";
       $binString = base_convert($octString,8,2); // = "111001"
      ?>
      

    Binary to Octal

    Here are two ways to convert a binary string to an octal string using built-in functions:

    • Use bindec to convert the binary string to numeric binary, and then use decoctto convert the numeric binary value to an octal string:
      <?php
       $binString = "1010";
       $binNumeric = bindec($binString);
       $octString = decoct($binNumeric); // = "12"
      ?>
      
    • Use base_convert to convert the binary string directly to an octal string:
      <?php
       $binString = "11011";
       $octString = base_convert($binString,2,8); // = "33"
      ?>
      

    Octal to Hex

    Here are two ways to convert an octal string to a hexadecimal string using built-in functions:

    • Use octdec to convert the octal string to numeric binary, and then use dechexto convert the numeric binary value to a hexadecimal string:
      <?php
       $octString = "77";
       $binNumeric = octdec($octString);
       $hexString = dechex($binNumeric); // = "3f"
      ?>
      
    • Use base_convert to convert the octal string directly to a hexadecimal string:
      <?php
       $octString = "123";
       $hexString = base_convert($octString,8,16); // = "53"
      ?>
      

    Hex to Octal

    Here are two ways to convert a hexadecimal string to an octal string using built-in functions:

    • Use hexdec to convert the hexadecimal string to numeric binary, and then use decoct to convert the numeric binary value to an octal string:
      <?php
       $hexString = "7d8";
       $binNumeric = hexdec($hexString);
       $octString = decoct($binNumeric); // = "3730"
      ?>
      
    • Use base_convert to convert the hexadecimal string directly to an octal string:
      <?php
       $hexString = "f0";
       $octString = base_convert($hexString,16,8); // = "360"
      ?>
  • 相关阅读:
    【报错】引入jar包import org.apache.commons.codec.digest.DigestUtils 报错,jar不存在
    【spring data jpa】使用jpa的@Query,自己写的语句,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'status' cannot be found on null
    【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException
    【java】java中直接根据Date 获取明天的时间
    【java】处理时间字段 在数据库查询的时候只想要年月日,不想要时分秒 ,java中设置时间类型为年月日,java中设置Date中的时分秒为00.00.000
    【spring data jpa】 spring data jpa 中 时间格式设置between and 查询
    【mybatis】mybatis 中select 查询 select * 查询出来的数据,字段值带不出来 数据不全
    【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法
    Centos7安装配置tomcat 9并设置自动启动
    centos7 yum安装配置redis 并设置密码
  • 原文地址:https://www.cnblogs.com/oxspirt/p/6930125.html
Copyright © 2011-2022 走看看