在C语言中,定义一个变量就必须先指定其类型,比如int,float,double,指针等。

JS的基础类型只有undefined、null、number、boolean、string,引用类型为Object等,当我们let或var一个变量时,是不确定它是什么类型的,所以当我第一次碰到int转byte这种类型转换时,是很懵圈的。

下面是方法:

1.int转byte(一个int占用4个byte,所以需要一个长度为4的byte数组)

//方法1  number 为要转换的int型整数 length为数组长度
let intToByte = (number, length) => {
		var bytes = [];
		var i = 0;
			bytes[i++] = number & (255);
			number = number >> 8;
			console.log("右移后的number"+number);
		} while (i < length)
		return bytes;
//方法2  num为需要转换的int型整数
let intToByte = i => {
	var b = i & 0xFF;
	var c = 0;
	if (b >= 128) {
		c = b % 128;
		c = -1 * (128 - c);
	} else {
		c = b;
	return c
let newBlock1 = []
    newBlock1[0] = intToByte((num & 0x000000ff))
	newBlock1[1] = intToByte((num & 0x0000ff00) >>> 8)
	newBlock1[2] = intToByte((num & 0x00ff0000) >>> 16)
	newBlock1[3] = intToByte((num & 0xff000000) >>> 24)

2.byte转int

let block = [29,75,89,8];
let block1;
block1 = (parseInt((block[0] & 0xff))) + (parseInt((block[1] & 0xff) << 8)) + (parseInt((block[2] & 0xff) <<
		16)) + (parseInt((block[3] & 0xff) << 24))
//赋值后的block1即为int型数据

3.int转unsingned int的

	// 正数不变,有负号的+4294967296 
	let intToUint = (i) => {
		if (i >= 0) {
			return i;
		} else {
			return 4294967296 + i;

4.float转byte 

let num =62.123456 let floatData = new Float32Array(1) floatData[0] = num let byte4 = new Uint8Array(floatData.buffer) console.log(byte4);//Uint8Array(4) [107, 126, 120, 66] 小端

链接(需付费使用): Float与Byte互转工具_4bytetofloatc-C#工具类资源-CSDN下载

补充知识点:大小端(大小字节序)

小端:高位在前,低位在后;

大端:低位在前,高为在后。

2.4 JavaScript与C交换 数据 在2.3中我们介绍了内存模型和Module.HEAP的基本用法。本节将深入讨论JavaScript与C如何交换 数据 。2.4.1 参数及返回值在之前章节的例程中,我们有意忽略了一个基础性的问题:JavaScript与C/C++相互调用的时候,参数与返回值究竟是如何传递的?答案是:一切皆为Number。tips JavaScript只有一种数值 类型 :Number... 加密后的字节数组可以编码成Hex、Base64、Crypto JS 库默认输出 Hex Crypto JS 库 SHA 算法输出 Base64 结果的方法 加密结果 Base64 转 Hex 需要注意的地方 没有任何输入,也能计算 hash 值 function BytesToIntLittleEndian(bytes){ var val = 0; for (var i = bytes.length - 1; i >= 0; i--) { val += bytes[i]; if (i != 0) { val = val << 8; return val; //小端模.. 更详细的讲解和代码调试演示,请参看视频:更详细的讲解和代码调试演示过程,请参看视频用java开发C 语言 编译器jvm字节码对应于数组操作时有一套特定的指令,当字节码要在虚拟机上生成一个含有10个元素的整形数组时,它会执行以下指令:sipush 10newarray intastore 0第一条语句sipush 10 先将数组所包含的元素的个数压到堆栈上,生成数组时对应一条特定指令就是 newarra... 最近接触到了不少前端的技术,作为一个老的C++程序员,了解到竟然可以把C++代码直接编译成 JS 在前端运行感觉到不可思议,于是就跳入了这个大坑。 从我这个老的C++程序员的理解顺序来说,我是从如下几个方面去了解整个webas 引言JavaScript 是一种弱 类型 或者说动态 语言 。这意味着你不用提前声明变量的 类型 ,在程序运行过程中, 类型 会被自动确定。这也意味着你可以使用同一个变量保存不同 类型 数据 ,这会让大家写代码很飘逸,但也会造成 数据 类型 错误的报错var foo = 42; // foo is a Number nowfoo = "bar"; // foo is a String nowfoo = true; ... 使用场景: 就是需要在body前面加上一个 16位的为0的byte数组,然后就一直在纠结,最开始的时候,一直都在想怎么将字符串 转换 为byte,然后找了各种方法,ArrayBuffer,什么方法都找过了,都是解析失败 解决方法: 自己写了一个16个字节的二进制0数组,然后 转换 为字符串,拼接在请求的前面,成功。 记录两个方法: function stringToByte(str) { var bytes = new Array(); var len, c; len = str.le /// 转换 字节数组的起始位置 /// 串行化结构的长度 public static int ByteArrayToStructure(byte[] bytearray, ref object obj, &lt;script src="${pageContext.request.contextPath}/static/scripts/jquery/dist/ js encrypt. js "&gt;&lt;/script&gt;           页面放置一个隐藏的input标签...