给定终端/ tty的列+行,如何计算可以容纳的最小/最大字节数

时间:2019-07-13 21:41:14

标签: node.js terminal tty

假设我们使用node.js获取终端的当前列和行:

console.log('rows:', process.stdout.rows);
console.log('columns:', process.stdout.columns);

有没有一种方法可以计算出可以容纳在终端窗口中的字节数?我的意思是我猜应该是“行*列”,但我真的不知道。

我的猜测是rows*columns是可以容纳的 max 个字节,但实际上,它可能更少,并不准确。

1 个答案:

答案 0 :(得分:1)

最大数目取决于窗口的标称大小(行乘以列)以及字符单元格编码的方式。节点应用程序假定所有内容都编码为UTF-8,这意味着每个单元可以是4个字节(例如,请参见this answer)。

除此之外,您还必须在每行的末尾留一个换行符(除非您一直依赖换行符)。换行符是一个字节。

所以...

(1 + )* * 4

作为第一近似值。

如果考虑组合字符,这可能会增加估算值,但是(请参见this answer)对的限制定义不明确。实际上,这些字符很少用在欧洲字符中,而用在某些亚洲字符( ymmv )中。