Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
442 views
in Technique[技术] by (71.8m points)

这两段进制转换的代码是怎么实现的?

图片说明
图片说明

第一段我按照程序的算法试着把一个16进制数转10进制但是发现算出来不对啊,比如说A=32(16进制

i>>4=3,

j=32%16=6

k=3*10+j=36 !=50

是我哪个地方算错了呢?

第二段代码目的是把16进制数转为10进制判断值是否在目标范围间,但为什么把数据左移24/16/8位后再进行 | 运算能变成10进制数呢?有老哥愿意讲一下吗


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

第一个程序,按照程序计算,应该是十进制转换成16进制(输出以十进制数表示十六进制)
第二个程序,按程序理解,不应该是十六进制转换10进制,应该是256进制转十进制。看功能,应该是IP地址转换成一个32字节的数值,用于保存或者传输用的。数组里保存的是十进制数字,左移,可理解为按照位置把他们各自放到对应的内存位置中;又或者,左移一位,即乘以2,所以每次左移八位,即乘以256了。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.6k users

...