奇趣网|统计宝|用string.crc32()函数进行循环冗余校验

在现代信息通信中,用什么方法可以简单方便地知道对方收到的是我发送过去的完整内容而没有错漏呢?使用string.crc32()函数进行循环冗余校验是一种比较好的算法.

奇趣网统计宝的网页机器人里输入以下源码:

var _string = await jsx.loadcodex("return string;");
var a = await _string.crc32("中国1");
console.log("a:",a);
var b = await _string.crc32("中国2");
console.log("b:",b);
var c = await _string.crc32("中国2");
console.log("c:",c);

运行后输出:

a: 83861905
b: -1644761045
c: -1644761045

我们可以看到,不同的内容它的crc32校验值是不同的,而相同的内容它的crc32校验值是相同的,所以当你把一段信息发送给对方之后,让对方把收到的信息进行crc32校验然后把校验码发给你,就可以知道发送过程中信息有没有发生错漏了.

奇趣网|统计宝|用string.concat()函数拼接可能为null的变量

在编程的过程中,我们会经常遇到变量值可能为null的情况,如果直接用+号连接会报错,所以用string.concat()函数拼接可能为null的变量.

奇趣网统计宝的网页机器人里输入以下源码:

var _string = await jsx.loadcodex("return string;");
console.log("结果:",await _string.concat ("1","23","abcdefg"));
console.log("结果:",await _string.concat ("你","好",null));

输出:

结果: 123abcdefg
结果: 你好

可以看到这个函数可以很好地兼容拼接的内容为null时的情况,不会因为拼接的变量为null而报错.

奇趣网|统计宝|用string.collate()比较两个字符串是否相同

奇趣网统计宝的网页机器人里输入以下源码,

var _string = await jsx.loadcodex("return string;");
console.log("比较结果:",await _string.cmp ("1","1"));
console.log("比较结果:",await _string.cmp ("1","3"));

运行后输出:

比较结果: 0
比较结果: -2

string.collate()函数的作用就是比较两个字符串是否相同,注意区分大小写,即使内容相同但大小写不同,也会被认为是不同.相同则返回0,不相同则返回非0整数.

奇趣网|统计宝|string.cmp()是怎么比较两个字符串?

奇趣网统计宝的网页机器人里输出以下源码运行:

var _string = await jsx.loadcodex("return string;");
console.log("比较结果:",await _string.cmp ("1","b"));
console.log("比较结果:",await _string.cmp ("1","3"));
console.log("比较结果:",await _string.cmp ("10","30"));
console.log("比较结果:",await _string.cmp ("1","3b"));
console.log("比较结果:",await _string.cmp ("1a","3b"));

可以看到输出:

比较结果: -49
比较结果: -2
比较结果: -2
比较结果: -2
比较结果: -2

string.cmp()的作用就是比较两个字符串.

奇趣网|统计宝|string.charCodeAt()的作用是什么?

前面说到 string.charAt(UTF8字符串,字符位置) 函数的功能是返回UTF8编码的文本指定位置的字符,那么在奇趣网统计宝的网页机器人里,string.charCodeAt (UTF8字符串,字符位置)的功能又是什么呢?

我们通过对比发现,charCodeAt比charAt多了Code,这个Code指的是Unicode,string.charCodeAt (UTF8字符串,字符位置)的作用就是返回UTF8编码的文本指定位置的字符的Unicode编码.

我们输入以下源码:

var _string = await jsx.loadcodex("return string;");
console.log("字符的Unicode编码:",await _string.charCodeAt ("123456",2));
console.log("字符的Unicode编码:",await _string.charCodeAt ("abcdef",2));
console.log("字符的Unicode编码:",await _string.charCodeAt ("中国必赢",2));

运行后输出:

字符的Unicode编码: 50
字符的Unicode编码: 98
字符的Unicode编码: 22269

可以看到输出的 50 98 22269 分别是数字2英文b汉字国的Unicode编码.

奇趣网|统计宝|string.charAt()函数怎么用?

在统计宝里打开开发者工具输入以下代码:

var _string = await jsx.loadcodex("return string;");
console.log("第2个字符是:",await _string.charAt("123456",2));
console.log("第2个字符是:",await _string.charAt("abcdef",2));
console.log("第2个字符是:",await _string.charAt("中国必赢",2));

运行后可以看到输出:

第2个字符是: 2
第2个字符是: b
第2个字符是: 国

奇趣网统计宝的网页机器人里,string.charAt(UTF8字符串,字符位置)函数的功能是返回UTF8编码的文本指定位置的字符,第一个参数,如果是非UTF8编码的字符要先转换为UTF8编码才能正确返回预期的内容.第二个参数,是指定要返回肉眼可见可数的第几个字符.比如上面的例子中,每个英文和数字都是占一个字节而汉字占4个字节,但第二个汉字是国字,它是按字符来算而不考虑字节的不同.

奇趣网|统计宝|string.bytes()怎么用?

统计宝的网页机器人的网页里右键检查打开开发者工具,切换到源代码选项页,新建源代码片断,输入以下源码:

var _string = await jsx.loadcodex("return string;");
console.log("汉字每个字占多少个字节:",await _string.bytes("中"));
console.log("英文每个字占多少个字节:",await _string.bytes("abcdefg"));
console.log("数字每个字占多少个字节:",await _string.bytes("1234567890"));

点”Ctrl+Enter”运行,可以看到输出:

汉字每个字占多少个字节: 3
英文每个字占多少个字节: 1
数字每个字占多少个字节: 1

由此可知在奇趣网统计宝的网页机器人里,每个汉字占3个字节,每个英文字母占1个字节,每个数字占1个字节.

string.bytes (字符串,字符数量,开始位置) 的作用是将字符计数转为字节计数,它有三个参数,第一个参数是字符串,第二个参数是字符数量,第三个参数指定开始的位置.

例如:

var _string = await jsx.loadcodex("return string;");
var str = "中国人123abc";
var length = await _string.len(str);
console.log("字符串长度:",length);
console.log("占多少个字节:",await _string.bytes(str,length,1));

输出:

字符串长度: 9
占多少个字节: 15