例如 38000H 怎么能快速 笔算 转成十进制 ?
1
ipadpro4k 2020-08-20 08:51:52 +08:00 via iPhone
3x16^4+8x16^3
|
2
ffLoveJava OP 其实我想问的末尾有很多 0 的大数 十六进制怎么转 ? 如果是 3800000000000H 呢
@ipadpro4k |
3
ipwx 2020-08-20 09:03:59 +08:00
$ python -c 'print(0x3800000000000)'
985162418487296 |
4
xdeng 2020-08-20 09:05:56 +08:00
每个操作系统都有个工具叫 计算器 😁
|
5
ljpCN 2020-08-20 09:08:15 +08:00 via Android
@ffLoveJava 先把末尾的 0 去掉计算,然后多少个 0 就乘上 16 的多少次方
|
6
cedoo22 2020-08-20 09:18:44 +08:00
笔算。。。再怎么也快不了吧
|
7
lechain 2020-08-20 09:29:05 +08:00 via Android
scanf("%x",&x);
printf("%d", x); 这样最快 |
8
TomVista 2020-08-20 09:30:38 +08:00
a16to10(3800000000000H) :dog
|
9
Tony042 2020-08-20 09:35:16 +08:00
#pragma once
#include "../typelist/ctvalue.hpp" #include <cassert> #include <cstddef> constexpr int toInt(char c) { if (c >= 'A' && c <= 'F') { return static_cast<int>(c) - static_cast<int>('A') + 10; } if (c >= 'a' && c <= 'f') { return static_cast<int>(c) - static_cast<int>('a') + 10; } assert(c >= '0' && c <= '9'); return static_cast<int>(c) - static_cast<int>('0'); }; template <std::size_t N> constexpr int parseInt(char const (&arr)[N]) { int base = 10; int offset = 0; if (N > 2 && arr[0] == '0') { switch (arr[1]) { case 'x': case 'X': base = 16; offset = 2; break; case 'b': case 'B': base = 2; offset = 2; break; default: base = 8; offset = 1; break; } } int value = 0; int multiplier = 1; for (std::size_t i = 0; i != N - offset; ++i) { if ((arr[N - 1 - i] != '\'') && (arr[N - 1 - i] != '\0')) { value += toInt(arr[N - 1 - i]) * multiplier; multiplier *= base; } } return value; } 今天刚用 C++ constexpr 实现了个进制转换 |
10
idealhs 2020-08-20 09:46:17 +08:00
大学期末都考完了,实在想不通你还有什么笔算的需求。。。
|
11
bubuyu 2020-08-20 10:21:26 +08:00
@ffLoveJava 一楼已经给了解法了,3*16^12+8*16^11
|
12
Jooooooooo 2020-08-20 10:35:47 +08:00
?
不会是要人脑去算吧 用电脑啊 |
13
c6h6benzene 2020-08-20 10:41:19 +08:00 via iPhone
笔算的话就是一楼的人公式,至于数字大…你可以跟老师申请用计算器。
|