使用 ChrB 生成的字節數組,嘗試用 AscB 反解時提示「無效的過程調用參數」。代碼涉及 y(j)=Chr(a)&Chr(b)&Chr(c)&Chr(d) 構造特殊符號,再用 MidB、AscB 處理。
ChrB 接受 0-255 返回單字節字符串(實為強制截斷高位字節的 Variant)。AscB 僅接受單字節字符串,若傳入普通 Unicode 字符串(即使長度為 1)會報錯。MidB 從字節角度截取,但返回的仍是 Variant,若未正確聲明為 Byte 數組,AscB 仍會失敗。Dim arr() As Byte。StrConv(str, vbFromUnicode) (Unicode→系統默認 ANSI 字節) 和 StrConv(bytes, vbUnicode) (字節→Unicode)。WideCharToMultiByte/MultiByteToWideChar 指定代碼頁(如 65001 UTF-8)最可靠。' 正確:構造字節數組
Dim bytes(3) As Byte
bytes(0) = a: bytes(1) = b: bytes(2) = c: bytes(3) = d
' 如需轉為字符串顯示(按系統 ANSI 頁)
Dim str As String
str = StrConv(bytes, vbUnicode) ' 字節數組 → Unicode 字符串
' 反向:字符串 → 字節數組
Dim bytes2() As Byte
bytes2 = StrConv(str, vbFromUnicode)
拋棄 ChrB/AscB/MidB 混用字符串的舊習慣,擁抱 Byte 數組 + StrConv/API 的現代寫法。