是否可以在Actionscript中获取浮点(IEEE-754)Number对象的原始字节?
或者,如果我能得到符号(1位),尾数(52位)和指数(11位),那么我可以自己做位移并构造原始字节数组。
我想为某些序列化情况创建Number值(十六进制,base-36,base-64等)的精确,紧凑的字符串表示。
我可能也有兴趣构建紧凑的16位浮点数(IEEE半精度)并将它们打包成密集的字节数组。
例如,在Java中,我可能会编写这样的代码来创建双精度字符串表示:
public static String hexRepresentation(double value) {
long bits = Double.doubleToLongBits(value);
String hex = Long.toHexString(bits);
return hex;
}
public static String b36Representation(double value) {
long bits = Double.doubleToLongBits(value);
String hex = Long.toString(bits, 36);
return hex;
}
public static void main(String[] args) {
System.out.println(hexRepresentation(123.456)); // 405edd2f1a9fbe77
System.out.println(hexRepresentation(Math.PI)); // 400921fb54442d18
System.out.println();
System.out.println(b36Representation(123.456)); // z8nf9qi2e5pz
System.out.println(b36Representation(Math.PI)); // z21th0e6pjiw
}
如果有人对如何在动作中完成同样的事情有任何想法,我很想知道。但到目前为止,似乎不可能。 FP10 for Alchemy中的那些新操作码怎么样?有没有什么可以让你以某种方式得到原始字节?
答案 0 :(得分:1)
我很确定你可以通过创建一个bytearray然后在其上调用writeFloat来做到这一点。然后,您可以使用readByte读取每个字节,然后根据需要进行移位和屏蔽,以获得您想要的内容。