C++进制调换的实例

正文实例讲述了PHP达成十进制、二进制、八进制和十陆进制转换相关函数用法。分享给我们供大家参谋,具体如下:

 2个面试题,供给输入十进制数,输出十6进制,能够使用printf打字与印刷%d,%c,%s来输出,但无法采取%x 打字与印刷。

1.二进制:

    写了三种算法,还算相比轻松,粘贴在此。        

一.一.2进制转10进制:

// 第一种算法,从低位到高位扫描移位,需要一个数组辅助倒序,一次性输出结果 

#include <stdio.h> 

#define MAX_HEX_NUM 16 
#define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节

static char Hex_Char_Table[MAX_HEX_NUM] = { 
  '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' 
}; 

int ten2hex( int data ) 
{ 
  char result[OUT_DATA_LEN+1]; 
  int i,index; 

  result[OUT_DATA_LEN] = '\0'; 
  for( i=OUT_DATA_LEN-1; i>=0; i-- ) 
  { 
    index = data & 0xf; 
    result[i] = Hex_Char_Table[index]; 
    data = data>>4; 
  } 

  printf("0x%s\n",result); 

  return 0; 
} 

函数:bindec(string $binary_string)

    下边是第3种算法,从高位向未有扫描,获得结果直接打字与印刷。

@param $binary_string
参数表示所要转换的二进制字符串。
@return 
返回与$binary_string参数所表示的二进制数的十进制数等价值。

#include <stdio.h> 

#define BITS_OF_INT  sizeof(int)*8 // int的位数 
#define OUT_DATA_LEN sizeof(int)*2 // 2个16进制数表示1个字节 

int printHex( int num ) 
{ 
  int i; 

  printf("0x"); 
  for(i=0;i<OUT_DATA_LEN;i++) 
  { 
    unsigned int res = num & 0xf0000000; //注意,必须用 unsigned int来接收,否则当输入负数的时候会转换错误 
    res = res >> (BITS_OF_INT-4); 
    char c; 
    if( res <= 9 ) 
      c = res + '0'; 
    else 
      c = 'A' + res - 10; 

    printf("%c",c); 

    num = num << 4; 
  } 

  printf("\n"); 
} 

函数表明:

   
二种算法其实都以应用移位的点子来运算,而不是利用除法,那样会更高效一些,笔者想这一个主题素材的考试的地方应该也在此地吧。

bindec()将三个二进制数调换来Integer类型或然是因为大小的内需,转换为float类型。
bindec()将具备的$binary_string值解释为无符号整数。这是因为bindec()函数将其最高有效位正是数量级而非符号位。【即最高位0或1并不被bindec()表示为+或-而是按值来表示1便是1,0正是0】

如有疑问请留言恐怕到本站社区调换座谈,感激阅读,希望能协理到我们,感激大家对本站的协理!

注意:参数必须为字符串,使用其余的数据类型会促成不可预感的结果。

你大概感兴趣的小说:

  • c++10进制调换为随机2-1陆进制数字的实例
  • 2~陆11人任性进制转变方法(c++)
  • C++
    基础编制程序之10进制转换为随机进制及操作符重载
  • C++学习小结之二进制转变
  • c++达成10进制转变到1陆进制示例
  • C++
    10进制调换为2进制的实例代码

范例:

<?php
  echo bindec('10010') . "\n";
  echo bindec('00110') . "\n";
  echo bindec('1111') . "\n";

如上程序语句会依次输出:1八,六,1伍

一.2.二进制转十陆进制

函数:bin2hex(string $str)

@param  $str
将要改变的ASCII字符的字符串。
@return 
重回转换字符串的十陆进制值。

函数表达:

bin2hex() 函数把 ASCII 字符的字符串转变为十陆进制值。字符串可透过利用
pack() 函数再转移回去。
bin2hex() 函数调换使用字节格局,高肆个人字优先。

范例:

(1)bin2hex()转移‘chengdu’为十6进制值:

<?php
  $str = bin2hex('chengdu');
  echo $str;

如上程序语句会输出:636865陆e676475

(二)把几个字符串值从二进制转换为十陆进制,再转移回去:

<?php
  $str = 'chengdu';
  echo bin2hex($str) . "<br/>";
  echo pack("H*", bin2hex($str)) . "<br/>";

如上程序语句依次输出:6368656e676475, chengdu

2.八进制:

二.1.八进制转十进制:

函数:octdec(string $octal_string)

@param  $octal_string
参数表示就要改变的八进制字符串。
@return  
返回$octal_string参数所代表的8进制数的10进制等值。

函数表明:

octdec()可以拍卖Integer大数字,但在这种情景下它会回来float类型。

范例:

<?php
  echo octdec( '010' ) . "\n";
  echo octdec( decoct( 45 ) );

如上程序语句会输出:八, 45

3.十进制:

叁.一.拾进制转二进制:

函数:decbin(int $number)

@param  $number 
所要调换的十进制数字,所能调换的最大数值为十进制的4294967295,其decbin结果为
3二 个 一 的字符串。
@return  
重临十进制数字调换后的二进制字符串。

函数表明:

decbin()函数所能转变的最大10进制数值为42949672玖5,其结果为 3二 个 一的字符串。

范例:

<?php
  echo decbin ( 10 ) . "\n";
  echo decbin ( 50 );

上述程序语句会输出:1010, 1100十

3.贰.10进制转八进制:

函数:decoct(int $number)

@param  $number
所要转移的十进制数字,所能转换的最大数值是拾进制的42949672九伍,其decoct()结果为
“3777777777柒”。
@return  
再次来到三个富含有给定$number参数的捌进制表示的字符串。

函数表达:

网站地图xml地图