JavaScript ASCII 转换字元及 Math.random 对应

JavaScript 中,可以使用 charCodeAt() 和 fromCharCode() 方法来进行 ASCII 编码和解码。随机乱数方法 Math.random() 在规定范围的两个数字之间生成一个随机选取的 Random Value 随机数。JavaScript 处理字元时,需要和 ASCII 码与字元相互转换,传回字串中的十进位 ASCII 编码、或 ASCII 码转换成基本字串。

charCodeAt() 将字元转换为 ASCII 编码

传回字串中「一个字」的十进位的 ASCII 编码。返回 0 到 65535 之间的整数。

var str = "ABC";
console.log(str.charCodeAt());   // 65
console.log(str.charCodeAt(0));  // 65
console.log(str.charCodeAt(1));  // 66
console.log(str.charCodeAt(2));  // 67
var str = "字串";
console.log(str.charCodeAt(0));  // 23383
console.log(str.charCodeAt(1));  // 20018
console.log(str.charCodeAt(2));  // NaN


例如定义 "Hello" 字符串然后使用遍歷字符串中的每个字符,并且使用 charCodeAt() 方法获取其每个字符 ASCII 编码,并将其储存在 charCode 变数中。最后将每个字符的 ASCII 编码拼接到一个新的字符串中,用空格分隔。这样就可以将整个字符串转换为 ASCII 编码表示形式。

const str = "Hello";
let AsciiString = "";
for (let i = 0; i < str.length; i++) {
  const charCode = str.charCodeAt(i);
  AsciiString += charCode + " ";
}
console.log(AsciiString); // "72 101 108 108 111"


fromCharCode() 将 ASCII 编码转换为字元

返回 Unicode, UTF-16 或 ASCII 码转换成基本字串。UTF-16 代码单元的数字。范围介于 0 到 65535(0xFFFF)之间。

String.fromCharCode(65);             // 'A'
String.fromCharCode(65, 66, 67);     // 'ABC'
String.fromCharCode(0x5B57, 0x4E32); // '字串'

23383 十六进位 = 5B57 、 20018 十六进位 = 4E32

console.log("\u5B57\u4E32");         // '字串'

因为 fromCharCode() 仅适用于十六进位值(与 \u 转义序列相同)所以需要代理对才能返回补充字符。



于 Math.random 对应

Math.random() 非真乱数值,传回非真乱数值,数值大于等于 0 小于 1。乱数方法用电脑的当下「时间为种子」。

var n1 = Math.random();
var n2 = parseInt(n1 * 100);
console.log(n1);
console.log(n2);
n1 = .
n2 = .



使用 Math.random 对应 ASCII 码产生 100 个字元,为方便验证结果可以使用 以排序输出。
为排序所以先用 Array 阵列储存乱数,再显示出产生的结果。

for (var i = 0; i < 100; i++) {
  var result = (Math.floor(Math.random() * 10));
  a.push(String.fromCharCode(result + 48));
}
for (var i = 0; i < 100; i++) {
  var result = (Math.floor(Math.random() * 26));
  a.push(String.fromCharCode(result + 65));
}
for (var i = 0; i < 100; i++) {
  var result = (Math.floor(Math.random() * 26));
  a.push(String.fromCharCode(result + 97));
}



Guid.NewGuid (随机数字 Random)

Guid.NewGuid() 是 .NET Framework 中的一个方法,用于生成全局唯一标识符 GUID。由于 GUID 和 UUID 的生成算法不同,所以生成的值不完全相同,但它们都是唯一的。因此使用 UUID 库时,不能将其与 .NET Framework 中的 Guid.NewGuid() 方法混淆。通用识别码 (UUID) 00000000-0000-0000-0000-000000000000 产生的 GUID 字串包含 - 共 36 个字使用乱数产生器。
字串数字长度共 32 个字,8 + 4 + 4 + 4 + 12 栏位结构 16 进位数字码、不区分大小写。

JavaScript NewGuid

const g = function () {
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
const NewGuid = function () {
  return (g() + g() + "-" + g() + "-" + g() + "-" + g() + "-" + g() + g() + g());
}
let newGuidString = NewGuid();
console.log(newGuidString.toUpperCase());

970B9802-3155-42E0-A664-07699A029B63




ASPX NewGuid

NewGuid 微软依据 (UUID) 通用唯一辨识码 Universally Unique Identifier 规范的 128 位元识别码识别码。

Guid.NewGuid 方法、使用 GUID 产生乱数字串,将 NewGuid 的输出适合密码编译使用的乱数产生器。

Dim GNGid = Guid.NewGuid()
GNGid.ToString() = 970b9802-3155-42e0-a664-07699a029b63
UCase(GNGid.ToString()) = 970B9802-3155-42E0-A664-07699A029B63
GNGid.ToString().Length = 36

https://docs.microsoft.com/zh-tw/dotnet/api/system.guid.newguid?view=netframework-4.8#system-guid-newguid



C# NewGuid

在 SQL Server 资料库中,使用自动递增值的替代方式是使用 NewGuid 的 Guid 方法,在用户端电脑上产生插入每个新资料列时可复制到伺服器的 GUID (全域唯一识别项)。NewGuid 方法会产生 16 个位元组的二进位值,而此值是使用尽可能确保没有任何值会重复的演算法所建立的。

string s = Guid.NewGuid().ToString("N");

.ToString("N") 带选择性负号的整数和小数位数、群组分隔符号,以及小数分隔符号。支援所有的数字类型、精确度依需要的小数位数。预设有效位数规范由 NumberFormatInfo.NumberDecimalDigits 定义。

string s = Guid.NewGuid().ToString("D");

.ToString("D") 带选择性负号的整数位数。支援整数的类型、精确度规范最少位数。预设精确度规范,必要的最少位数。十进位格式规范会将数字转换为十进位数 0 ~ 9 的字串,如果数字为负数,则在前面加上负号。