问题标签 [magic-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
129 浏览

macos - 如何在核心数据持久存储中添加“幻数”?

是否可以在核心数据持久存储中添加一些“幻数”数据?

我有一个使用自定义二进制文件格式的旧应用程序。每个文件都以一个 5 字节的幻数(比如说0A 0B 0C 0D 0E)和一个 1 字节的格式版本标识符开始;之后是实际数据。当用户尝试打开文件时,应用程序的现有版本会执行以下检查:

  • 如果文件的前 5 个字节与幻数不匹配,用户会收到一条消息,如“文件不是此应用程序可以读取的格式。它可能有错误的文件扩展名。”</li>
  • 如果幻数匹配,但版本标识符高于应用程序可以读取的版本,用户会收到一条消息,如“该文件是使用此应用程序的较新版本创建的。您需要升级到新版本。”</li>

我想利用核心数据存储在新版本的应用程序中,同时仍然使用相同的文件扩展名并保持与旧版本应用程序的适当兼容性:尝试使用旧版本打开使用新版本应该得到他们应该升级的消息,而不是其他消息。这可能吗?如何?

0 投票
1 回答
1781 浏览

winforms - 43679是一个神奇的数字吗?

最近我正在调查这个问题:Storing long values in DataGridView C#。经过一些测试,我发现即使该值实际存储在单元格中并且您可以通过编程方式访问它,它DataGridViewCell也不会显示任何长度大于43679 个字符的文本。

实际上,这也被报告为一个错误SQL Server Management StudioSSMS - Can not paste more than 43679 characters from a column in Grid Mode

我猜这个限制是为了防止 UI 渲染出现任何过载。但我的问题是:

  1. 为什么要使用这个确切的值?
  2. 有这个限制的任何文件吗?
0 投票
3 回答
7952 浏览

c# - 来自 StreamReader 的原始文件字节,幻数检测

我试图区分“文本文件”和“二进制”文件,因为我想有效地忽略具有“不可读”内容的文件。

我有一个我认为是 GZIP 存档的文件。我试图通过检测幻数/文件签名来忽略这种文件。如果我在 Notepad++ 中使用十六进制编辑器插件打开文件,我可以看到前三个十六进制代码是1f 8b 08.

但是,如果我使用 a 读取文件StreamReader,我不确定如何获取原始字节..

在 using 语句的末尾,我有以下变量值:

两者都不是以 Notepad++ 中显示的十六进制值开头。

是否可以从通过读取文件的结果中获取原始字节StreamReader

0 投票
3 回答
5078 浏览

python - 我怎么能说一个文件是 SVG 而不使用幻数?

SVG文件基本上是一个文件XML,因此我可以使用字符串<?xml(或十六进制表示:)'3c 3f 78 6d 6c'作为幻数,但有一些相反的理由不这样做,例如,如果有额外的空格可能会破坏此检查。

我需要/期望检查的其他图像都是二进制文件并且有幻数。如何在SVG不使用扩展名的情况下快速检查文件是否为格式,最终使用 Python?

0 投票
2 回答
7518 浏览

checkstyle - Java的checkstyle,MagicNumberCheck

我正在使用checkstyle来获取有关我的源代码的报告。这个问题是关于MagicNumberCheck的。

Date/(org.joda.)DateTime在我的源代码中使用这样的:

如果幻数在日期或日期时间内,有没有办法抑制MagicNumberCheck 通知?

0 投票
1 回答
405 浏览

python - 提升 Python 幻数

我正在尝试包装一些 C++ 函数以在 python 中使用。例如,这里是 boost Python 教程中的函数。

当我将其编译成 .pyc 文件并尝试将其导入 python 时,我收到错误:

ImportError:C:\hello_ext.pyc 中的错误幻数

我已经使用另一个论坛的方法检查了幻数,它似乎确实是错误的。我四处搜索,但找不到有关此错误消息的任何有用信息。我怀疑这是我的 Visual Studio 项目文件中的错误设置,或者可能与我编译 boost 的方式有关?

我正在使用 Visual Studio 2010 服务包 1、python 2.7.3 和 boost 1.53

我使用以下选项编译了 boost。

0 投票
2 回答
13748 浏览

java - 幻数问题的解决方案......?

考虑以下代码段...

现在,SONAR 将案例(案例 3 和案例 4)中的数字 3 和案例 4 检测为幻数。

为了避免这个问题,我改变了我的代码段如下......

这是在这种情况下解决幻数问题的好方法吗?

0 投票
6 回答
10879 浏览

java - 即使文件扩展名已更改,如何识别文件类型?

文件按文件扩展名分类。所以我的问题是,即使文件扩展名已更改,如何识别文件类型。

例如,我有一个名为 的视频文件myVideo.mp4,我已将其更改为myVideo.txt. 因此,如果我双击它,首选文本编辑器将打开文件,而不会打开确切的内容。但是,如果我myVideo.txt在视频播放器中播放,视频将毫无问题地播放。

我只是想开发一个应用程序来确定文件的类型,而不检查文件扩展名并建议打开文件的软件。我想用Java开发应用程序。

0 投票
1 回答
696 浏览

bit-manipulation - 这种神奇的位计数方法是如何工作的?

在处理 XKCD 愚人节的绞链散列冲突问题时,我遇到了这种奇怪的、快速的、乘法计算单词中设置位的方法:

为什么这样做/发生了什么?我们能否推广这种方法(例如,从问题中处理我们的 128 位值)?

另外,我不禁认为这与这个关于使用聪明的幻数移动位的问题有关。

0 投票
3 回答
1249 浏览

java - Java 主方法幻数

所以我试图摆脱我主要方法中的两个神奇数字。我尝试将它们设为静态字段,但我得到了一个不同的 checkstyle 错误。我正在寻找一种方法让我的主要方法使用 checkstyle 完全检查。

这些是我得到的 checkstyle 错误:

“2000”是一个神奇的数字

'262' 是一个神奇的数字

当我将它们设为静态字段时,这些是 checkstyle 错误:

名称 'twothou' 必须匹配模式 '^[AZ][A-Z0-9]*(_[A-Z0-9]+)*$'。

名称“twosixtytwo”必须匹配模式“^[AZ][A-Z0-9]*(_[A-Z0-9]+)*$”。

PS如果我尝试使变量非静态它不会让我编译。谢谢您的帮助。