最後方便於 電腦讀取的一種紙卡 可節省不少時間的樣子
但是對於 這種作法不表示贊成 因為身為學生 畫那東西超類XD
恩~偏題了! 關於區位碼 的使用 可以讓 程序員更理解 編碼方式
及 字元轉換原理
我們接下來 將要把 中文字 轉乘 區位碼
區位碼 是一個 十進制 的4個數字組成
前兩碼是區碼後兩把是位碼
關於 區位碼的理解 目前尚未找到 實用性佳的地方
不過對於了解 密碼學 與 電腦內部編碼記憶體 機械語言有者密不可分的關西
多了解 以備不時之需
大致解說一下 轉換原理
比如說 "健"這個字
BIG碼 是B0B7
取位元組 在轉 十進制 =176,183
再將這兩位元組 分別減160
等於16與23
在字串相加=1623 就是區位碼了
再來看程式範例 更能進入狀況了
private void btn_Get_Click(object sender, EventArgs e)
{
if (txt_Chinese.Text != string.Empty)//判斷輸入是否為空
{
try
{
// 呼叫副程式getCode("帶參數")
txt_Num.Text = getCode(txt_Chinese.Text);
}
catch (IndexOutOfRangeException ex)
{
MessageBox.Show(//使用消息對話框提示異常訊息
ex.Message + "請輸入正確的中文字", "出錯!");
}
}
}
/// <summary>
/// 得到中文字區位碼方法
/// </summary>
/// <param name="strChinese">中文字字符</param>
/// <returns>返回中文字區位碼</returns>
public string getCode(string Chinese)//Chinese是txt_Chinese.text
{
//Default預設編碼為DBCS
//DBCS是雙位元組字元集
byte[] P_bt_array = Encoding.Default.GetBytes(Chinese);//得到中文字的2Byte陣列
int front = (short)(P_bt_array[0] );//將字節陣列的第一位轉換成short類型
//short帶正負號的 16 位元整數-32,768 至 32,767
int back = (short)(P_bt_array[1] - '\0');//也將將字節陣列的第二位轉換成short類型
//之後全部用INT 整數裝起來
//最後在個別-160 字串在相加
//176-160= 16 + 183-160=23 =1623 就是區位碼了
return (front - 160).ToString() + (back - 160).ToString();//計算並返回區位碼
}
PS:Default 屬性。判斷系統使用的預設字碼頁
沒有留言:
張貼留言