在 Javascript 中将任意字符串转换为 0 到 1 之间的数字
Convert arbitary string to number between 0 and 1 in Javascript
我正在使用 Youtube 视频,其 ID 为 8DnKOc6FISU、rNsrl86inpo、5qcmCUsw4EQ(即集合 A-Za-z0-9_-中的 11 个字符)
目标是将每个 id 转换为一种颜色(由范围 0-1 表示),以便可靠地绘制它们。
根据这个问题,这些是64位数字。 鉴于:
- 我想充分利用任何给定视频集的色彩空间
- 无论如何,颜色感知并不那么准确
。将其基于ID的最后2-3个字符似乎是明智的。
我的主要方法是我从这里借用的一个函数,它将每个字符转换为二进制数,如下所示:
function toBin(str){
var st,i,j,d;
var arr = [];
var len = str.length;
for (i = 1; i<=len; i++){
d = str.charCodeAt(len-i);
for (j = 0; j < 8; j++) {
st = d%2 == '0' ? "class='zero'" : ""
arr.push(d%2);
d = Math.floor(d/2);
}
}
}
但这留下了如何将其转换回浮点数的问题。
对优雅的解决方案有什么想法吗?
非常感谢您的帮助!
知道系统以 64 为 base 64 (26+26+10+2),只需读取每个符号,将其添加到总数并在每次迭代时将结果乘以 64。最后你会有一个整数。将其除以最大值以将其规范化为 0-1 范围。
但是,当您的 ID 接近 253 时,您将开始失去精度,因为这是 JS 可以精确表示整数的最大值。
或者,您可以通过为行中的每个位置添加 (letter_index/64letter_position) 来从一开始就计算浮点数,但在此过程中会失去更高的精度。
相关文章:
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 输入字段,只接受0到12之间的数字
- 删除图形和数字之间的连字符(-)符号
- 计算HTML表TD中两个数字之间的百分比
- 通过变量在两个数字之间切换
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 如何创建一个确定2个数字之间值的函数
- 用于获取两个方括号之间的数字的正则表达式
- 在 javascript 中,将数字之间出现的所有“-”替换为“:”
- 正则表达式和 javascript:匹配数字后跟空格和大写字母之间的所有内容
- 剑道 UI - 自定义数字格式在 2015.3.1111 > 2016.1.412 之间更改
- Jquery if 在 2 个数字之间
- php中的函数或介于-200和200之间但不为零的数字
- 验证数字是否在0.00到20.00之间的正则表达式
- 如何在javascript中生成任意四个数字之间的随机数
- 验证javascript中的输入是否在2个数字之间
- 从1-9之间的随机数字列表中选出3个相同的数字
- 如何使除法符号在基本计算器的数字之间只出现一次
- 正则表达式用于验证两个范围之间的数字
- 需要用 Javascript 或 jQuery 替换 [..] 之间的数字