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 的字串,如果數字為負數,則在前面加上負號。