【发布时间】:2021-07-06 14:48:43
【问题描述】:
总结
我一直在尝试通过一个包含 Unicode 代码点表的数组来解决这个问题,但是它太大了,我遇到了内存错误。
到目前为止我的工作细节
我将 Typescript 与 Micro:Bit 结合使用。我有一个大型数组(128 个条目),这是我的程序所必需的。该数组存储了 unicode 表的各种十六进制表示:
let font: number[] = [0x000b6526, 0x010514bf, 0x0004d6b2, 0x0010fc21, 0x0007c20f,
0x00744107, 0x01f4111f, 0x000d909b, 0x00117041, 0x0008ceb9, 0x0008c7e0, 0x01041041, .......];
但是,将此数组存储在 Micro:bit 上会导致 021 错误(没有可用内存或 GC 中的对象过多)。 有没有我错过的存储这个数组的替代方法? 在我的程序中,我需要将此数组用作查找表,以将字符串的字符转换为相应的 unicode 字符:
let character = font[string.charCodeAt(stringPosition)]
有关如何解决此内存问题的任何想法或建议,或者是否有更好的方法来实现我在此问题标题中所述的目标?
【问题讨论】:
-
128整怎么大?在任何情况下,存储二进制数据数组都比存储数字数组更有效。您可能会使用较低级别的数组(developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays)。但是,你为什么要这样做?为什么不使用内置的 Javascript 工具来转换为 Unicode 代码点?
-
我正在编写一个用于显示的库。要在上面显示弹簧,我需要将相应的 unicode 传输给它。但是我也很困惑这么快就用完了空间。我将尝试较低级别的数组。谢谢。
-
我花了一些时间来帮助你,所以你能告诉我为什么你必须使用数组而不是使用内置函数来为你做到这一点免费 i> 并且肯定 FAR 更有效? (见我的回答)我是否正确,根本问题是“如何有效地将字符转换为它们的 Unicode 代码点?”
-
问题是我需要从上面获得准确的表示(例如 0x00117041)才能将其传输到我的显示器。据我所知,MakeCode 中没有函数“codePointAt()”。您对此有什么建议吗?
-
codePointAt是string上的一个方法,它内置于Javascript。将十进制代码点转换为您需要的十六进制形式将是微不足道的。琐碎的。所以听起来你承认数组并不重要,你只需要获取任何 Unicode 字符的十六进制代码点,对吗?
标签: typescript unicode bbc-microbit makecode