我想将一个任意字符串(或更简单的处理字符串哈希)转换为0到1之间的浮点数。目的是创建一个函数,返回给定字符串的颜色代码,以便用户始终看到该实体的颜色与从其名称生成的颜色相同。
OP在评论中包含此代码(此处为了便于阅读):
var hashed:String = MD5.hash(input); // creates a 32 long hexa
const max:Number = Number("0xffffffffffffffffffffffffffffffff");
var hashedHexa:Number = Number("0x" + hashed);
return hashedHexa/max;
答案 0 :(得分:1)
因为你要我们创建一个算法;有很多方法可以做到这一点。我可能会尝试使用charCodeAt方法。概念上是这样的:
public function stringToDecimal(value:String):Number{
var results : Number = 0;
// loop over each character in string
for(var index:int = 0;index< value.length; index++){
// this code turns each character in the string to a number and adds them all together
// divide by 100 b/c we know all ASCII charcodes will be between 0 & 127. This will give
// a decimal result
results += (value.charCodeAt(index)/100);
}
return results
}
此算法不保证每个字符串都会返回唯一的数字;但这不是你的要求之一。