excel中经纬度转换十进制,每天学一点Excel2010103
excel中经纬度转换十进制,每天学一点Excel201010320)再加上容错!这是不想增加中间的辅助单元格的做法,所以公式老长,是我目前写的最长的公式。推荐多利用辅助单元格,可以将一个复杂的计算分解,便于分步编写和差错。加上容错18)后半部分对A~F的16进制也起作用,按照思路补全前半部分看看结果相同吗?16进制转10进制19)还是先把我的公式写上吧!
16)接上期,看看有啥变化?
- 基数可以填写。
- 逐位提取也可用。
- 提出的字符要使用lookup之类的函数将字符转换成数字,比如A=10,F=15。
不知道自己动手试试16进制的没有?自行摸索学东西才印象深。
17)把基数改为16,E2、E3的函数改成hex2dec,前半部分只对不用A~F的16进制起作用。
16进制转十进制
18)后半部分对A~F的16进制也起作用,按照思路补全前半部分看看结果相同吗?
16进制转10进制
19)还是先把我的公式写上吧!
加上容错
20)再加上容错!这是不想增加中间的辅助单元格的做法,所以公式老长,是我目前写的最长的公式。推荐多利用辅助单元格,可以将一个复杂的计算分解,便于分步编写和差错。
21)60进制可以采用0~9,25个大写字母,25个小写字母编一个。工作量更大了,但用于加密效果应该不错。为了防止自己被密住,下面看一下十进制怎么变成其他进制,有了十进制做桥梁,所有进制之间就都可以相互转化了。
辗转相除
22)新建一个工作表,A1单元格作为输入的十进制数,B2单元格输入基数。我们利用除基数取余法进行进制转换。在A2单元格输入“=int(A1/$B$1)”,向下填充。
辗转取余
23)在B2单元格输入公式“=mod(A1 $B$1)”,向下填充。
10进制转2进制
24)在C1单元格输入concatenate函数,将文本依次串接起来,标准的16位2进制。
随便输入数值
25)随便输个数值,比如10922,用前面做的二进制到十进制转换器验证一下结果。
26)把B1的基数改成8,用oct2dec函数验证一下,不过得删掉几个前导0。
十进制转16进制
27)把B1的基数改成16,因为16进制中10=A,我们任选一个单元格输入“=hex2dec("2AAA")”,结果为10922,正确。
0~15转换成0~F
28)现在我们要反过来把十进制的0~15,变成十六进制的0~F,输入上图的公式,向下填充。现在16进制转换器完成了。
10~16进制转换
29)目前这个转换器对16进制以下的都有效,你可以验证一下。
30)再增加进制数,需要增加对应翻译的字符数即可。
利用现成公式
31)可不可以利用Excel自带函数呢?当然可以,16是2的4次方,我们一次提取一位16进制数就相当于4位二进制数。在C2单元格输入“=hexbin(B2 4)”,向下填充。然后把二进制数使用concatenate函数连接起来。我们可以把参数4放在一个单元格,把16用2^4表示。1位8进制相当于3位2进制,同样也可以加快转换速度。
利用现成函数加速并大幅度扩展位数。
32)同理对于十进制像十六进制的转换,我们也可以用这样的方法,最多一次可以进行9位,我们举个5位的例子,将B1单元格改为“=16^5”,B2单元格不查询了改成“=mod(A1 $B$1)”向下填充,C2单元格改成“=dec2hex(B2 5)”。大幅度扩展了可转换的位数。
33)因为自带函数不算符号位最多9位,我们把1~9的单元格有效性放在D1单元格,将B1单元格改为“=16^D1”,C2单元格改成“=dec2hex(B2 $D$2)”,更改D3的值看一下结果看看。唯一的缺点是D1的位置选的不好,输入参数9的话C列太宽了。
十进制转16进制
34)D1输入1,对于固定的十六进制数字可以不用lookup函数,直接使用。
choose函数
35)对于其他进制,对于数值直接使用choose函数转换更加简洁,在C2输入上图中公式。D1为1时,可以用于所有进制,只要在choose函数后面继续增加字符即可,自己来个60进制的吧,可以用来加密,把数字或字母混合体转换成一个别人不知道的进制,加以混淆。不信输入你的手机号或者出生日期看看变成什么啦!
36)正数转换基本就这样了。下面讲一下负数转换的思路,不再往下讲了,自己动手试试。
- 符号位位置和位数固定,左边取第1位判断正负,8进制和16进制要将第1位变成2进制再取左边第1位。
- 补码可以使用查询,顺序倒过来就行。
输入负数
37)不用动手试了,神奇的事情发生了,输入一个负数看看,依然成立,看来计算机内的各种计算就是用二进制计算的,齐活了。但我实在无法解释。例如-4除以16,结果为-1,余12,就是说-4要借上12除16等于-1。
(待续)