摘要:进制转换在线工具获取的高位和低位获取高四位获取低四位高位和低位合并字节高位空格低位例如二进制转换成进制二进制转换十六进制十六进制字符串转字节数组十六进制字符串转字节数组每个字符串转换转为符合进制字符串字节数组转十六进制字符串字节数组转
进制转换在线工具
</>复制代码
获取byte的高4位bit和低4位bit
</>复制代码
function getHeight4(ata){//获取高四位
int height;
height = ((data & 0xf0) >> 4);
return height;
}
function getLow4(data){//获取低四位
int low;
low = (data & 0x0f);
return low;
}
</>复制代码
高4位和低4位合并
</>复制代码
1字节 = 高4位(空格)低4位
例如:00001001 = 0000 1001
二进制转换成16进制
1001(二进制) 转换 0x09(十六进制)
</>复制代码
十六进制字符串转字节数组
</>复制代码
/**
* 十六进制字符串转字节数组
* 每2个字符串转换
* 903132333435363738 转为 [-112, 49, 50, 51, 52, 53, 54, 55, 56]
* @param {String} str 符合16进制字符串
*/
Str2Bytes(str) {
var pos = 0;
var len = str.length;
if (len % 2 != 0) {
return null;
}
len /= 2;
var hexA = new Array();
for (var i = 0; i < len; i++) {
var s = str.substr(pos, 2);
var v = parseInt(s, 16);
if(v >=127) v = v-255-1
hexA.push(v);
pos += 2;
}
return hexA;
},
</>复制代码
字节数组转十六进制字符串
</>复制代码
/**
* 字节数组转十六进制字符串
* [-112, 49, 50, 51, 52, 53, 54, 55, 56] 转换 903132333435363738
* @param {Array} arr 符合16进制数组
*/
Bytes2Str(arr) {
var str = "";
for (var i = 0; i < arr.length; i++) {
var tmp;
var num=arr[i];
if (num < 0) {
//此处填坑,当byte因为符合位导致数值为负时候,需要对数据进行处理
tmp =(255+num+1).toString(16);
} else {
tmp = num.toString(16);
}
if (tmp.length == 1) {
tmp = "0" + tmp;
}
str += tmp;
}
return str;
},
</>复制代码
十六进制字符串转数组
</>复制代码
/**
* 十六进制字符串转数组
* 1185759ac35a91143f97037002b1a266 转换 ["11", "85", "75", "9a", "c3", "5a", "91", "14", "3f", "97", "03", "70", "02", "b1", "a2", "66"]
* @param {String} str 十六进制字符串
*/
Str2Arr(str) {
var pos = 0;
var len = str.length;
if (len % 2 != 0) {
return null;
}
len /= 2;
var hexA = new Array();
for (var i = 0; i < len; i++) {
var s = str.substr(pos, 2);
hexA.push(s);
pos += 2;
}
return hexA;
},
</>复制代码
十六进制数组进行异或
</>复制代码
/**
* 十六进制数组进行异或
* @param {Array} arr 十六进制数组
*/
BytesDes(arr) {
var des = 0
for (var i = 0; i < arr.length; i++) {
des ^= parseInt(arr[i], 16)
}
return des.toString(16).toUpperCase();
},
</>复制代码
十进制转十六进制
</>复制代码
/**
* 十进制转十六进制
* 15 转 0F
* @param {Number} num 十进制数字
*/
toHex(num) {
return ("0" + (Number(num).toString(16))).slice(-2).toUpperCase()
}
</>复制代码
二进制转十六进制
</>复制代码
/**
* 二进制转十六进制
* 00001001 转 09
* @param {String} str 二进制字符串
*/
binTohex(str) {
let hex_array = [{ key: 0, val: "0000" }, { key: 1, val: "0001" }, { key: 2, val: "0010" }, { key: 3, val: "0011" }, { key: 4, val: "0100" }, { key: 5, val: "0101" }, { key: 6, val: "0110" }, { key: 7, val: "0111" },
{ key: 8, val: "1000" }, { key: 9, val: "1001" }, { key: "a", val: "1010" }, { key: "b", val: "1011" }, { key: "c", val: "1100" }, { key: "d", val: "1101" }, { key: "e", val: "1110" }, { key: "f", val: "1111" }]
let value = ""
let list = []
if (str.length % 4 !== 0) {
let a = "0000"
let b = a.substring(0, 4 - str.length % 4)
str = b.concat(str)
}
while (str.length > 4) {
list.push(str.substring(0, 4))
str = str.substring(4);
}
list.push(str)
for (let i = 0; i < list.length; i++) {
for (let j = 0; j < hex_array.length; j++) {
if (list[i] == hex_array[j].val) {
value = value.concat(hex_array[j].key)
break
}
}
}
return value
}
</>复制代码
十六进制数字和ASCII字符之间转换
</>复制代码
var hex="0x10";//十六进制
var charValue = String.fromCharCode(hex);//生成Unicode字符
var charCode = charValue.charCodeAt(0);//获取指定字符的十进制表示.
var hexOri="0x"+charCode.toString(16);;//将int值转换为十六进制
hex:0x10
charValue:+
charCode:16
hexOri:0x10
</>复制代码
十六进制数组转ASCLL编码
</>复制代码
/**
* 十六进制字符串转ASCLL编码
* 3132333435363738 转换 12345678
* @param {String} str 十六进制字符串
*/
HexToAscll(str) {
var pos = 0;
var len = str.length/2;
var hexA = "";
for (var i = 0; i < len; i++) {
var s = str.substr(pos, 2);
hexA += String.fromCharCode(`0x${s}`);
pos += 2;
}
return hexA;
},
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/103865.html
摘要:学习笔记字符串的扩展字符的表示法允许使用的形式表示一个字符,但在之前,单个码点仅支持到,超出该范围的必须用双字节形式表示,否则会解析错误。返回布尔值,表示参数字符串是否在源字符串的头部。,是引入了字符串补全长度的功能。 es6学习笔记-字符串的扩展_v1.0 字符的Unicode表示法 JavaScript 允许使用uxxxx的形式表示一个字符,但在 ES6 之前,单个码点仅支持u00...
摘要:此类中的方法在关闭此流后仍可被调用,而不会产生任何。主要的功能是从缓冲区读取字节构造函数创建一个,使用作为其缓冲区数组。缓冲区会随着数据的不断写入而自动增长。 内存操作流 之前的所有的流操作都是针对文件的,但是有时候只是想要实现数据间转换,此时如果我们想要创建一个文件然后再删除文件,那样显得有点麻烦,因此此时的内存操作流就显得很适合这类的操作,因为它只是在内存中存储,并不会真正的创建文...
摘要:而所有的数据运算都是采用补码进行的。补码解决负数加法运算正负零问题,弥补了反码的不足。通过使用访问修饰符可以使实例变量对子类可见暂时在学习基础语法知识的时候可以暂时忽略实例变量这部分内容,这部分内容主要被使用在面向对象的部分,但是极其重要。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242)...
阅读 1592·2023-04-25 19:00
阅读 4328·2021-11-17 17:00
阅读 1945·2021-11-11 16:55
阅读 1702·2021-10-14 09:43
阅读 3299·2021-09-30 09:58
阅读 1001·2021-09-02 15:11
阅读 2254·2019-08-30 12:56
阅读 1538·2019-08-30 11:12
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要