1.接口文档 

 

 2.laravel实现代码

/**

* 进制转换计算器

* @return \Illuminate\Http\JsonResponse

*/

public function binaryConvertCal()

{

$ten = $this->request('ten');

$two = $this->request('two');

$four = $this->request('four');

$eight = $this->request('eight');

$sixteen = $this->request('sixteen');

$thirty_two = $this->request('thirty_two');

$type = intval($this->request('type')) ?: 10;

$data = [

'ten' => $ten,

'two' => $two,

'four' => $four,

'eight' => $eight,

'sixteen' => $sixteen,

'thirty_two' => $thirty_two

];

if ($type == 10 && $ten) {

// 1.十进制

$data['ten'] = $ten;

// 2.将十进制转换二进制

$data['two'] = decbin($ten);

// 3.十进制转换四进制

$data['four'] = $this->decimalToBase($ten, 4);

// 4.十进制转换八进制

$data['eight'] = decoct($ten);

// 5.十进制转换十六进制

$data['sixteen'] = dechex($ten);;

// 6.十进制转换三十二进制

$data['thirty_two'] = $this->base10ToBase32($ten);

}

if ($type == 2 && $two) {

// 1.二进制转换十进制

$ten = bindec($two);

$data['ten'] = $ten ?: 'NAN';

// 2.二进制

$data['two'] = $two;

// 3.二进制转换为四进制

$fourNumber = bindec($two); // 转换为10进制

$fourNumber = base_convert($fourNumber, 10, 4); // 转换为4进制

$data['four'] = $fourNumber ?: 'NAN';

// 4.二进制转换为八进制

$eightNumber = bindec($two); // 转换为10进制

$eight = base_convert($eightNumber, 10, 8); // 转换为8进制

$data['eight'] = $eight ?: 'NAN';

// 5.二进制转换为十六进制

$sixteenNumber = bindec($two); // 转换为10进制

$sixteen = base_convert($sixteenNumber, 10, 16); // 转换为16进制

$data['sixteen'] = $sixteen ?: 'NAN';

// 6.二进制转换为三十二进制

$decimalNumber = bindec($two); // 将二进制数字转换为十进制

$thirty_two = base_convert($decimalNumber, 10, 32); // 将十进制数字转换为32进制

$data['thirty_two'] = $thirty_two ?: 'NAN';

}

if ($type == 4 && $four) {

// 1.四进制转换十进制

$ten = $this->base4_to_decimal($four);

$data['ten'] = $ten ?: 'NAN';

// 2.四进制转换为二进制

$two = $this->base4_to_binary($four);

$data['two'] = $two ?: 'NAN';

// 3.四进制

$data['four'] = $four;

// 4.四进制转换为八进制

$eight = $this->base4_to_octal($four);

$data['eight'] = $eight ?: 'NAN';

// 5.四进制转换为十六进制

$sixteen = $this->base4_to_hexadecimal($four);

$data['sixteen'] = $sixteen ?: 'NAN';

// 6.四进制转换为三十二进制

$thirty_two = $this->base4_to_base32($four);

$data['thirty_two'] = $thirty_two ?: 'NAN';

}

if ($type == 8 && $eight) {

// 1. 8进制转换为10进制

$ten = octdec($eight);

$data['ten'] = $ten ?: 'NAN';

// 2. 8制转换为二进制

$two = base_convert($eight, 8, 2);

$data['two'] = $two ?: 'NAN';

// 3. 8进制转换为4进制

$four = base_convert($eight, 8, 4);

$data['four'] = $four ?: 'NAN';

// 4. 8进制

$data['eight'] = $eight;

// 5. 8进制转换为16进制

$sixteen = base_convert($eight, 8, 16);

$data['sixteen'] = $sixteen ?: 'NAN';

// 6. 8进制转换为32进制

$base32Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';

$base32Number = '';

$decimalNumber = octdec($eight);

while ($decimalNumber > 0) {

$remainder = $decimalNumber % 32;

$base32Number = $base32Chars[$remainder] . $base32Number;

$decimalNumber = intdiv($decimalNumber, 32);

}

$data['thirty_two'] = $base32Number ?: 'NAN';

}

if ($type == 16 && $sixteen) {

// 1. 将16进制转换为10进制

$ten = hexdec($sixteen);

$data['ten'] = $ten ?: 'NAN';

// 2. 16制转换为2进制

$two = base_convert($sixteen, 16, 2);

$data['two'] = $two ?: 'NAN';

// 3. 16进制转换为4进制

$four = base_convert($sixteen, 16, 4);

$data['four'] = $four ?: 'NAN';

// 4. 16进制转换为8进制

$eight = base_convert($sixteen, 16, 8);

$data['eight'] = $eight;

// 5. 16进制

$data['sixteen'] = $sixteen;

// 6. 将16进制转换为32进制

$thirty_two = $this->hexToBase32($sixteen);

$data['thirty_two'] = $thirty_two ?: 'NAN';

}

if ($type == 32 && $thirty_two) {

// 1. 将32进制转换为10进制

$ten = $this->base32ToDecimal($thirty_two);

$data['ten'] = $ten ?: 'NAN';

// 2. 32制转换为2进制

$two = $this->base32ToBinary($thirty_two);

$data['two'] = $two ?: 'NAN';

// 3. 32进制转换为4进制

$four = $this->base32ToQuaternary($thirty_two);

$data['four'] = $four ?: 'NAN';

// 4. 32进制转换为8进制

$eight = $this->base32ToOctal($thirty_two);

$data['eight'] = $eight;

// 5. 32进制转换为16进制

$data['sixteen'] = $this->base32ToHex($thirty_two);

// 6. 32进制

$data['thirty_two'] = $thirty_two;

}

return $this->jsonSuc(['result' => $data]);

}

/**

* 十进制转换

* @param $decimal

* @param $base

* @return string

*/

function decimalToBase($decimal, $base)

{

$result = '';

while ($decimal > 0) {

$remainder = $decimal % $base;

$result = $remainder . $result;

$decimal = (int)($decimal / $base);

}

return $result;

}

/**

* 十进制转换为三十二

* @param $num

* @return string

*/

function base10ToBase32($num)

{

$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';

$base32 = '';

while ($num > 0) {

$remainder = $num % 32;

$base32 = $chars[$remainder] . $base32;

$num = (int)($num / 32);

}

return ($base32 === '') ? '0' : $base32;

}

/**

* 4转换为10进制

* @param $num

* @return float|int

*/

function base4_to_decimal($num)

{

$decimal = 0;

$base = 4;

$num_length = strlen($num);

for ($i = 0; $i < $num_length; $i++) {

$digit = intval($num[$i]);

$decimal += $digit * pow($base, $num_length - $i - 1);

}

return $decimal;

}

/**

* 4转换为2进制

* @param $num

* @return string

*/

function base4_to_binary($num)

{

$decimal = $this->base4_to_decimal($num);

return decbin($decimal);

}

/**

* 4转换为8进制

* @param $num

* @return string

*/

function base4_to_octal($num)

{

$decimal = $this->base4_to_decimal($num);

return decoct($decimal);

}

/**

* 4转换为16进制

* @param $num

* @return string

*/

function base4_to_hexadecimal($num)

{

$decimal = $this->base4_to_decimal($num);

return dechex($decimal);

}

/**

* 4转换为32进制

* @param $num

* @return string

*/

function base4_to_base32($num)

{

$decimal = $this->base4_to_decimal($num);

return base_convert($decimal, 10, 32);

}

/**

* 16转32进制

* @param $hex

* @return string

*/

function hexToBase32($hex)

{

$base32Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';

$result = '';

// 将十六进制字符串拆分成两个字符一组

$hexPairs = str_split($hex, 2);

// 将每个十六进制对转换为十进制,并将其转换为五位长的三十二进制数

foreach ($hexPairs as $pair) {

$dec = hexdec($pair);

$base32 = '';

while ($dec >= 32) {

$rem = $dec % 32;

$base32 = $base32Chars[$rem] . $base32;

$dec = (int)($dec / 32);

}

$base32 = $base32Chars[$dec] . $base32;

$result .= $base32;

}

return $result;

}

/**

* 将32进制转换为10进制

* @param string $num 32进制字符串

* @return int 转换后的10进制数值

*/

function base32ToDecimal($num)

{

$base32_chars = "0123456789abcdefghijklmnopqrstuv";

$dec = 0;

$len = strlen($num);

for ($i = 0; $i < $len; $i++) {

$pos = strpos($base32_chars, $num[$i]);

$dec = 32 * $dec + $pos;

}

return $dec;

}

/**

* 将32进制转换为2进制

* @param string $num 32进制字符串

* @return string 转换后的2进制字符串

*/

function base32ToBinary($num)

{

$dec = $this->base32ToDecimal($num);

$binary = decbin($dec);

return $binary;

}

/**

* 将32进制转换为4进制

* @param string $num 32进制字符串

* @return string 转换后的4进制字符串

*/

function base32ToQuaternary($num)

{

$dec = $this->base32ToDecimal($num);

$quaternary = base_convert($dec, 10, 4);

return $quaternary;

}

/**

* 将32进制转换为8进制

* @param string $num 32进制字符串

* @return string 转换后的8进制字符串

*/

function base32ToOctal($num)

{

$dec = $this->base32ToDecimal($num);

$octal = decoct($dec);

return $octal;

}

/**

* 将32进制转换为16进制

* @param string $num 32进制字符串

* @return string 转换后的16进制字符串

*/

function base32ToHex($num)

{

$dec = $this->base32ToDecimal($num);

$hex = dechex($dec);

return $hex;

}

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: