javascript - JavaScript 文件中八进制/十六进制与 ascii 占用的空间差异

标签 javascript hex ascii octal

所以字母a在十进制中是97,在十六进制中是61,在八进制中是141 。你可以在 JavaScript 中这样写:

var octal = [ '\141', '\141', '\141' ]
var hex   = [ '\x61', '\x61', '\x61' ]
var ascii = [ 'a', 'a', 'a' ]

它们都会产生相同的结果:

console.log(octal) //=> ["a", "a", "a"]
console.log(hex)   //=> ["a", "a", "a"]
console.log(ascii) //=> ["a", "a", "a"]

但是,我想知道的第一部分是,它们实际上是不同数量的 ASCII 字符定义:

'\141' (4)
'\x61' (4)
'a'    (1)

我想知道如果您以八进制或十六进制定义一个大文本 block ,它实际上会占用文件中 4 倍的空间量。因此,如果您从 /api/resources.json 以八进制形式返回 JSON 响应,则响应大小将是返回 ASCII 时的 4 倍。也就是说,对此的回应:

'\141\141\141\141\141\141\141\141\141\141\141\141....'

与对此的回应:

'aaaaaaaaaaa....'

所以我不确定它是否真的使文件大小/响应大小更大(可能是一个愚蠢的问题,但这个 encoding stuff 很困难)。只是想确保,是的​​,它会占用更多空间,因为看起来就是这样。所以基本上,在 JavaScript 文件中写入“原始十六进制/八进制”会导致它变得比 ASCII 更大。

最佳答案

js 文件存储文本,写得越多,文件大小就越大。

这对于编译语言来说不是问题,因为源代码的目的是生成语法语义合理化的其他语言(中间语言、字节码等)。

为浏览器编写的 javascript 文件在分发之前不会进行编译,因此文件大小可能是性能方面需要考虑的一个因素。

所以这实际上取决于你编写 javascript 的目的......

如果您是为 NodeJs 运行时环境编写它,则性能差异可以忽略不计。

如果您从网络服务器提供 js 文件,并使用十六进制字符表示法定义大字符串,则可以稍微减少加载时间。

关于javascript - JavaScript 文件中八进制/十六进制与 ascii 占用的空间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005949/

相关文章:

JavaScript 枚举器?

javascript - Instafeed/html 响应部分

objective-c - encodeHexString objc 实现,我是否应该支持奇数长度的十六进制字符串,如果是,如何?

javascript - 如何检测浏览器是否支持window.close?

javascript - 动态加载的 div 内容中的 jQuery 工具提示

python - 如何在 python 中使用 hex()?

c - 在 C 中将 Hex 写入文件(不是 ASCII)

javascript - 如何将ASCII码字符串转换为字符串?

python - 使用 PPM 文件在 python 中将图像转换为 ASCII。不允许 PIL

javascript alt/花式文本生成器