在Javascript中将任意字符串转换为介于0和1之间的数字
我正在处理ID为8DnKOc6FISU、rNsrl86inpo、5qcmCUsw4EQ(即集合A-Za-z0-9_-)的Youtube视频 目标是将每个id转换为颜色(由0-1范围表示),以便能够可靠地绘制它们 根据这些数字,它们是64位数字。鉴于:在Javascript中将任意字符串转换为介于0和1之间的数字,javascript,Javascript,我正在处理ID为8DnKOc6FISU、rNsrl86inpo、5qcmCUsw4EQ(即集合A-Za-z0-9_-)的Youtube视频 目标是将每个id转换为颜色(由0-1范围表示),以便能够可靠地绘制它们 根据这些数字,它们是64位数字。鉴于: 我想为任何给定的视频集充分利用色彩空间 无论如何,颜色感知并不是那么准确 …以id的最后2-3个字符为基础似乎是明智的 我的引导方法是借用的函数,它将每个字符转换为二进制数,如下所示: function toBin(str){
- 我想为任何给定的视频集充分利用色彩空间
- 无论如何,颜色感知并不是那么准确
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);
}
}
}
托宾函数(str){
var st,i,j,d;
var-arr=[];
var len=str.length;
对于(i=1;i知道系统是以64为基数的(26+26+10+2),只需读取每个符号,将其添加到总数中,并在每次迭代时将结果乘以64。最后您将得到一个整数。将其除以最大值,将其标准化为0-1范围
但当ID接近253时,您将开始失去精度,因为这是JS在整数中可以精确表示的最大值
或者,您可以通过添加(字母索引/64字母位置)从一开始计算浮动对于行中的每个位置,但在处理过程中会丢失更多的精度。计算机显示器无论如何只能使用2^24种不同的颜色,因此有限的精度不是一个真正的问题。不知您是否需要为颜色使用浮点数,您可以只做模2^24的数学运算,而不必担心整数溢出g、 谢谢奥列格,谢谢你的帮助。