相关疑难解决方法(0)

Javascript Typed Arrays和Endianness

我正在使用WebGL渲染二进制编码的网格文件.二进制文件以big-endian格式写出(我可以通过在十六进制编辑器中打开文件或使用fiddler查看网络流量来验证这一点).当我尝试使用Float32Array或Int32Array读取二进制响应时,二进制文件被解释为little-endian并且我的值是错误的:

// Interpret first 32bits in buffer as an int
var wrongValue = new Int32Array(binaryArrayBuffer)[0];
Run Code Online (Sandbox Code Playgroud)

我在http://www.khronos.org/registry/typedarray/specs/latest/找不到任何类型数组默认字节序的引用,所以我想知道这笔交易是什么?在使用类型化数组进行读取时,我是否应该假设所有二进制数据都应该是小端?

为了解决这个问题,我可以使用DataView对象(在上一个链接中讨论)并调用:

// Interpret first 32bits in buffer as an int
var correctValue = new DataView(binaryArrayBuffer).getInt32(0);
Run Code Online (Sandbox Code Playgroud)

默认情况下,"getInt32"等DataView函数会读取big-endian值.

(注意:我已经使用Google Chrome 15和Firefox 8进行了测试,它们的行为方式相同)

javascript endianness webgl typed-arrays arraybuffer

58
推荐指数
5
解决办法
3万
查看次数

如何在两个32位整数中存储64位整数并再次转换回来

我很确定它只是一些按位操作的问题,我只是不完全确定我应该做什么,并且所有搜索都返回"64位对32位".

c++

27
推荐指数
3
解决办法
3万
查看次数

javascript浮动/到位

我试图在任何其他语言中执行一些简单易懂的东西,但不是javascript:从浮动中获取位数(反之亦然).

在C/C++中它会是这样的

float a = 3.1415;
int b = *((int*)&a);

反之亦然

int a = 1000;
float b = *((float*)&a);

在C#中,您可以使用BitConverter ... floatBits或类似的东西......即使在VB6中为了基督的缘故,您也可以将float32存入int32.我怎么能在javascript中转换和int和浮点数?

javascript types

22
推荐指数
2
解决办法
7288
查看次数

如何将64位整数分割为两个32位整数

我想将64位整数分成两个32位整数:

var bigInt = 0xffffff;

var highInt = bigInt >> 8 // get the high bits 0xfff
var lowInt = bigInt // cut of the first part (with &)?

console.log(highInt); // 0xfff
console.log(lowInt); // 0xfff

// set them together again
var reBigInt = (highInt << 8) + lowInt;
Run Code Online (Sandbox Code Playgroud)

不幸的是,既没有获得highInt也没有获得lowInt的工作......有人能给我答案我需要如何使用按位运算符吗?

问候

javascript byte integer bit-manipulation

8
推荐指数
2
解决办法
6215
查看次数

Javascript中的原生64位整数

似乎即使是最新的Ecmascript 8也不支持64位整数.

目前我们必须使用库,如LongUInt64Closure Library.

在技​​术上是否可以在Javascript中为64位整数添加本机支持?

javascript

6
推荐指数
1
解决办法
716
查看次数