魔数_魔鬼数字 - CSDN
精华内容
参与话题
  • 魔数

    千次阅读 2014-12-01 20:28:31
    所谓魔数和魔字符串就是指在代码中出现但没有解释的数字常量或字符串。如果在某个程序中你使用了魔数,那么在几个月(或几年)后你将很可能不知道它的含义是什么。 魔数就是在程序中多次使用,并且有实际意义,但是...

    所谓魔数和魔字符串就是指在代码中出现但没有解释的数字常量字符串。如果在某个程序中你使用了魔数,那么在几个月(或几年)后你将很可能不知道它的含义是什么。

    魔数就是在程序中多次使用,并且有实际意义,但是却以常量形式表现出来的数。


    通常更好的代码风格要求为这样的值定义一个符号名,以确保代码中各处使用的值是相同的。


    还可以只让此魔数出现一次,其余出现的地方,使用替代出现。

    eg:char str[43];

    使用sizeof(str) 带代替魔数43



    展开全文
  • 关于魔数

    2018-05-10 09:32:07
    魔数又坑我第二次了,第一次是写的一个数组a[200],导致运行一些图片的时候老崩溃,这种内存报错的,都无法定位错误的,很难排查原因,晨哥几个人排查了大半天也没找到,最后岳工来了,打断点调试,看到a[200]问这是...

    魔数又坑我第二次了,第一次是写的一个数组a[200],导致运行一些图片的时候老崩溃,这种内存报错的,都无法定位错误的,很难排查原因,晨哥几个人排查了大半天也没找到,最后岳工来了,打断点调试,看到a[200]问这是啥,然后改成a[1200],就完美通过了。他说这是魔数,C++编程规范里面就有说禁止用这些魔数。。。而这次是表格老出现大斜线,我也是纳闷。。。然后慢慢调试发现,代码里写的tmp_left_x=1000,判断语句应该能进去的,但是发现就是进不去,然后才发现原来是针对600乘以800大小图来做的,最大800也不会超过1000,但是现在的图是2000乘以1500的,完全有可能超过1000,晨哥说你这么胆大,才放1000,有时候我放10000都怕小了,Glaoshi直接改成INT_MAX了。所以,慎重,最好使用相对量来定义这些常数。。

     if(0!=flg_succession)
            {
                int tmp_left_x=INT_MAX;//1000 
                int tmp_right_x=-1;//
                for(int j=flg_first_i;j<flg_first_i+flg_succession+1;j++)
                {
                    //int flg_min_left_x=0;
                    if(vec_leftPts[j].x<=tmp_left_x)
                    {
                        indx_left_x=j;
                        tmp_left_x=vec_leftPts[j].x;
                    }
                    if(vec_rightPts[j].x>=tmp_right_x)
                    {
                        indx_right_x=j;
                        tmp_right_x=vec_rightPts[j].x;
                    }
                }


    展开全文
  • 魔数,常见魔数

    千次阅读 2018-05-13 18:31:48
    java 文件编译为 .class 字节码(byte code),字节码文件的前 4 位为魔数(起到标识说明作用),magicNumber = 0xCAFEBABE; 1. 可执行文件 几乎所有的可执行文件格式最开始的几个字节都是魔数: a.out:...
    • java 文件编译为 .class 字节码(byte code),字节码文件的前 4 位为魔数(起到标识说明作用),magicNumber = 0xCAFEBABE;

    1. 可执行文件

    几乎所有的可执行文件格式最开始的几个字节都是魔数:

    • a.out:最开始的两个字节为 0x01,0x07;
    • PE/COEF 文件最开始的两个字节为:0x4d, 0x5a,即 ASCII 码 MZ

      >> chr(0x4d)
      'M'
      >> chr(0x5a)
      'Z' 
    • ELF 文件的头四个字节:0x7F,0x45,0x4C,0x46

      • 第一个字节为 DEL 控制符,后三个字节则为 ELF 三个字母的 ASCII 码;
      >> chr(0x7f)
      '\x7f'
      >> chr(0x45)
      'E'
      >> chr(0x4c)
      'L'
      >> chr(0x46)
      'F'
    展开全文
  • 小知识 | Java中的“魔数

    千次阅读 2018-05-23 09:17:24
    转载自 小知识 | Java中的“魔数”在编程过程中,我们可能经常听到“魔数”这个词,那么这个词到底指的是什么呢?什么数叫做魔数呢?一、标识文件类型的“魔数”大多数情况下,我们都是通过扩展名来识别一个文件的...

    转载自 小知识 | Java中的“魔数”

    在编程过程中,我们可能经常听到“魔数”这个词,那么这个词到底指的是什么呢?什么数叫做魔数呢?

    一、标识文件类型的“魔数”

    大多数情况下,我们都是通过扩展名来识别一个文件的类型的,比如我们看到一个.txt类型的文件我们就知道他是一个纯文本文件。但是,扩展名是可以修改的,那一旦一个文件的扩展名被修改过,那么怎么识别一个文件的类型呢。这就用到了我们提到的“魔数”。


    很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型。有了这些魔术数字,我们就可以很方便的区别不同的文件。


    为了方便虚拟机识别一个文件是否是class类型的文件,SUN公司规定每个class文件都必须以一个word(四个字节)作为开始,这个数字就是魔数。魔数是由四个字节的无符号数组成的,而class文件的名字还挺好听的的,其魔数就是0xCAFEBABE


    读者可以随便编译一个class文件,然后然后用十六进制编辑器打开编译后的class文件,基本格式如下:

    如何使用16进制打开class文件:使用 vim test.class ,然后在交互模式下,输入:%!xxd 即可。

    二、代码中的魔数


    在有些代码中,有一些数字常量或者字符串,他们没有注释,并且从命名上也看不出什么意思,很可能在过一段时间之后谁也不知道这个常量或者字符串代表什么意思。我们就称这个常量或者字符串为魔数。


    在《阿里巴巴Java开发手册》中也有关于魔数的要求:


    所有需要使用魔数的地方,都可以使用枚举或者静态变量来代替。譬如一个很简单的根据职位计算薪水的方法:


    public int getSalary(String title, int grade{
       if ("Programmer".equals(title)){
           return grade * 500 + 700;
       }

       else if ("Tester".equals(title)){
           return grade * 500 + 800;
       }

       else if ("Analyst".equals(title)){
           return grade * 800 + 1000;
       }
    }


    在这个方法里面,"Programmer","Tester"和"Analyst"是所谓的魔字符串(Magic String),而500, 700,800和1000就是所谓的魔数(Magic Number)了。 咋一看,代码这样写也没有什么问题,但是,仔细思考一下就会发现,如果这种随手捻来的字符串和数字散布于程序当中,随处可见的话,是会有很多弊病的。


    如果我们使用常量来代替上面的魔数的话,代码就会清爽很多,而且,下次修改的时候只需要修改常量值就可以了。


    public int getSalary(String title, int grade{
       if (Constants.TITLE_PROGRAMMER.equals(title)){
           return grade * Constants.BASE_SALARY_LOW + Constants.ALLOWANCE_LOW;
       }
       else if (Constants.TITLE_TESTER.equals(title)){
           return grade * Constants.BASE_SALARY_LOW + Constants.ALLOWANCE_MEDIUM;
       }
       else if (Constants.TITLE_ANALYST.equals(title)){
           return grade * Constants.BASE_SALARY_HIGH + Constants.ALLOWANCE_HIGH;
       }
    }


    在代码中使用魔数,不仅使代码的可读性大大降低,还可能导致各种问题。所以在代码中,我们要尽量避免产生魔数。


    展开全文
  • 魔数(Magic Number)

    千次阅读 2018-03-16 21:58:11
    定义 很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充...因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型。 例子 1)FreeBSD 上 ELF 文件的 ...
  • 魔数 (深入理解JVM篇)

    2019-07-31 18:19:10
    这些天看java原理的时候看到“魔数”这个概念,一起来学习下把! 其实“魔数”是用来标识文件类型的 大多数情况下,我们都是通过扩展名来识别一个文件的类型的,比如我们看到一个.txt类型的文件我们就知道他是一个...
  • 小知识 | Java中的“魔数

    千次阅读 2018-07-30 13:21:04
    小知识 | Java中的“魔数”在编程过程中,我们可能经常听到“魔数”这个词,那么这个词到底指的是什么呢?什么数叫做魔数呢?一、标识文件类型的“魔数”大多数情况下,我们都是通过扩展名来识别一个文件的类型的,...
  • 关于魔数的分析

    千次阅读 2014-09-25 10:28:05
    在嵌入式中经常碰到魔数,比如: #define PLATDRV_MAGIC 0X60 #define LED_OFF _IO(PLATDRV_MAGIC,0X18) #define LED_ON _IO(PLATDRV_MAGIC,0X19) 然后我们会调用ioctl(fd[i],LED_OFF)或者ioctl(fd[i],LED_ON) ...
  • class文件魔数CAFEBABE的由来

    千次阅读 2017-04-09 22:38:01
    当时, 这个魔数并没有什么特别的意义, 也看不出来有什么重要的, 或许很快就会消失在历史中。所以 CAFEBABE 成为 class 文件的魔数, CAFEDEAD 成为持久对象的魔数. 但没多久持久化对象(persistent object)技术真的...
  • 有人可能会说通过文件的后缀名就可以知道文件的类型是什么,但别忘了,后缀名是可以被修改的。同时,当我们遇到一个不带后缀名的文件的时候,难道我们就束手无策了...魔数就是一个文件二进制形式的前4个字节,如java...
  • 这时候可以通过文件的魔数来判别。魔数就是文件开头的那几个字节的数据。 代码实现 工具类代码 import java.util.HashMap; import java.util.Map; /** * @author lixk * @description 魔数工具类 */ p...
  • Java 通过魔数判断上传文件的类型

    千次阅读 2019-04-12 20:13:21
    前言文件上传功能是很多网站都必须的功能,而判断文件类型不仅可以过滤文件的上传,同时也能防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当作免费的文件存储服务器使用。而对于上传文件来说,不能简单...
  • JVM进阶(十八)——初识Class文件

    万次阅读 2020-09-17 16:32:42
    JVM进阶(十八)——初识Class文件  关于类加载机制的相关知识在前面的博文中暂时先讲那么多。中间留下了很多问题,从本篇博文开始,...  在.class文件中,他的数据都是以无符号和表的形式存储的,后面我们进行.
  • 以下部分内容来自互联网 在驱动程序里, ioctl() 函数传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 ioctl()的cmd可以通过使用宏_IO()...
  • 各类文件的文件头 魔数

    千次阅读 2014-01-18 14:20:43
    从网上找的 正确性有待验证... 1、从Ultra-edit-32中提取出来的 JPEG (jpg),文件头:FFD8FF  PNG (png),文件头:89504E47  GIF (gif),文件头:47494638  ...CAD (dwg),文件头:41
  •  每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBABE,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件。使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的...
  • Magic Number魔数是什么

    千次阅读 2017-02-21 23:09:10
    在网上查magic number的相关介绍的时候,看到很多人的博客中说magic number之所以叫magic number,就是因为我们并不知道它有什么含义。。。 ...最后看了知乎上的回答: ... number一般是指硬写到代码里的整数常量,...
  • 同时能解决 东方红乡 全屏后帧飞起问题 如果你的游戏全屏正常,请不要使用此程序使用说明 1.启动本程序 2.使用 custom.exe 设置为窗口模式,或者,进入东方游戏,并且设置为窗口模式 3.进入 东方ST
  • 计算机中魔magic number的概念

    千次阅读 2015-10-02 13:03:24
    1.魔数  magic number一般是指硬写到代码或文件中的整型常量,数值是编程者自己指定的,其他人不知道数值有什么具体意义。另外,magic number有时也表示初学者不定义常量名直接写数的不良习惯。 2.使用魔数的...
  • 魔数 来源:CCF 标签: 参考资料: 相似题目: 题目 “魔数”是指代码中出现但没有解释的数字常量。即使代码是你亲手写下的,很可能在几个月以后你也不记得这些魔数的意义了。而这道题中魔数的含义,就需要你自己...
1 2 3 4 5 ... 20
收藏数 67,241
精华内容 26,896
关键字:

魔数