新手求问lua能将十进制和十六进制数互相转化吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手求问lua能将十进制和十六进制数互相转化吗相关的知识,希望对你有一定的参考价值。

可以的。

详细方法如下:

str="0xBA"

十六进制转到十进制

print(string.format("%d",str))

str="12345"

十进制转到十六进制

print(string.format("%#x",str))

1.二进制与十进制之间的转换

十进制转二进制

方法为:

十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

2.二进制与八进制之间的转换

二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

八进制转成二进制

方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

参考技术A str="1254687"

十进制转十六进制
输出为大写字母 用 %X

print(string.format("%X",str))
输出为小写字母 用 %x
print(string.format("%x",str))
加上 # 就在数字前面加上 0x 一般用在十六进制

print(string.format("%#x",str))

十六进制转十进制
str="0x10BC"
print(string.format("%d",str))
参考技术B   str="0xBA"

  十六进制转到十进制
  print(string.format("%d",str))

  str="12345"

  十进制转到十六进制
  print(string.format("%#x",str))

16进制与10进制怎么互相转换

本人正在学C语言,要知道16进制与10进制怎么互相转换,哪位高手帮帮忙,告诉我怎么用笔算解决!!谢谢!!

1、首先看一下十六进制与十进制的区别和表示方法,

2、十六进制数其实是由二进制数每四位转化分别转化为十进制数而来,

3、十六进制数转化为十进制数可以这样操作,

4、十进制数转化为十六进制数可以先转二进制再转十六进制,

5、十进制也可以直接转十六进制,完成效果图。

参考技术A

1、看一下十六进制与十进制的区别和表示方法。

2、十六进制数其实是由二进制数每四位转化分别转化为十进制数而来。

3、十六进制数转化为十进制数可以这样操作。

4、十进制数转化为十六进制数可以先转二进制再转十六进制。

5、十进制也可以直接转十六进制。

6、Excel里提供了函数直接计算十六进制与十进制之间的转化,分别为DEC2HEX和HEX2DEC。

参考技术B 回答

对于十六进制转十进制第一种:快速法(自己挺喜欢第一种的快捷)比如:012A=0 X 163 + 1 X 162+ 2 X 161 + 10 X 160 = 298说明:当中的十六进制:a=10 b=11 c=12 d=13 e=14 f=15第二种:迂回法将十六进制转换为二进制在转换为十进制(第一种小伙伴们或许不好理解,第二种容易理解)比如:1A首先转为二进制:0001 10100001 1010 再通过二进制的算法转十进制:0001 1010=1 X 24 + 1 X 23 + 1 X 21 = 26

参考技术C 进制转换
1。二进制与十进制数间的转换
(1)二进制转换为十进制
将每个二进制数按权展开后求和即可。请看例题:
把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10
(2)十进制转换为二进制
一般需要将十进制数的整数部分与小数部分分开处理。
整数部分计算方法:除2取余法 请看例题:
十进制数(53)10的二进制值为(110101)2
小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:
将(0.5125)10转换成二进制。(0.5125)10=(0.101)2
2。 八进制、十六进制与十六进制间的转换
八进制、十六进制与十六进制之间的转换方法与二进制,同十进制之间的转换方法类似。例如:
(73)8=7*81+3=(59)10
(0.56)8=5*8-1+6*8-2=(0.71875)10
(12A)16=1*162+2*161+A*160=(298)10
(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10
十进制整数→→→→→八进制 方法:“除8取余”
十进制整数→→→→→十六进制 方法:“除16取余” 例如:
(171)10=(253)8
(2653)10=(A5D)16
十进制小数→→→→→八进制小数 方法:“乘8取整”
十进制小数→→→→→十六进制小数 方法:“乘16取整” 例如:
(0。71875)10=(0.56)8
(0.142578125)10=(0.3C8)16
3. 非十进制数之间的转换
(1)二进制数与八进制数之间的转换
转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:
(423。45)8=(100 010 011.100 101)2
(1001001.1101)2=(001 001 001.110 100)2=(111.64)8
2。二进制与十六进制转换
转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:
(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2
(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16

PS:我个人喜欢先把十六进制换成二进制 在转化成十进制,反之亦然

用C写的函数
使用ltoa或itoa函数
#include <stdlib.h>
#include <stdio.h>

void main( void )

char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;

_itoa( i, buffer, 10 );//转换成10进制字符
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );//转换成16进制字符
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );//转换成2进制字符
printf( "String of integer %d (radix 2): %s\n", i, buffer );

_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );

_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
本回答被提问者采纳
参考技术D 十六进制转成10进制 ,先转成2进制, 再将二进制转成10进制就行了。好像是不能直接转化。可以加我QQ 教你各个进制之间的转化。107217949

以上是关于新手求问lua能将十进制和十六进制数互相转化吗的主要内容,如果未能解决你的问题,请参考以下文章

16进制与10进制怎么互相转换

急求十六进制转浮点数C程序!!!

Lua 读取二进制文件并转化为十六进制

java-十进制八进制十六进制数互相转换

软帝学院:java十进制八进制十六进制数互相转换

二进制数与十六进制数之间如何互相转换(看完秒懂)