字串和(Unicode)十六進位制數之間的轉換方法包含(C#和VB6)
阿新 • • 發佈:2019-02-01
很多人在做簡訊傳送的時候都會遇到字元轉換的問題.也就是說漢字轉換成Unicode編碼的問題.
1.C#中的程式碼
/// <summary>
/// <函式:Encode>
/// 作用:將字串內容轉化為16進位制資料編碼,其逆過程是Decode
/// 引數說明:
/// strEncode 需要轉化的原始字串
/// 轉換的過程是直接把字元轉換成Unicode字元,比如數字"3"-->0033,漢字"我"-->U+6211
/// 函式decode的過程是encode的逆過程.
/// </summary>
/// <param name="strEncode"></param>
/// <returns></returns>
public static string Encode(string strEncode)
{
string strReturn = "";// 儲存轉換後的編碼
foreach (short shortx in strEncode.ToCharArray())
{
strReturn += shortx.ToString("X4");
}
return strReturn;
}
/// <summary>
/// <函式:Decode>
///作用:將16進位制資料編碼轉化為字串,是Encode的逆過程
/// </summary>
/// <param name="strDecode"></param>
/// <returns></returns>
public static string Decode(string strDecode)
{
string sResult = "";
for (int i = 0; i < strDecode.Length / 4; i++)
{
sResult += (char)short.Parse(strDecode.Substring(i * 4, 4), global::System.Globalization.NumberStyles.HexNumber);
}
return sResult;
}
2.VB6中的程式碼
'*******************************************************************
'<函式:Encode>
'作用:將字串內容轉化為16進位制資料編碼,其逆過程是Decode
'引數說明:
'strSource 需要轉化的原始字串
Public Function Encode(strEncode As String) As String
Dim i As Long
Dim chrTmp$
Dim ByteLower$, ByteUpper$
Dim strReturn$ '儲存轉換後的編碼
For i = 1 To Len(strEncode)
chrTmp$ = Mid(strEncode, i, 1)
ByteLower$ = Hex$(AscB(MidB$(chrTmp$, 1, 1)))
If Len(ByteLower$) = 1 Then ByteLower$ = "0" & ByteLower$
ByteUpper$ = Hex$(AscB(MidB$(chrTmp$, 2, 1)))
If Len(ByteUpper$) = 1 Then ByteUpper$ = "0" & ByteUpper$
strReturn$ = strReturn$ & ByteUpper$ & ByteLower$
Next
Encode = strReturn$
End Function
'</函式:Encode>
'*******************************************************************
'*******************************************************************
'<函式:Decode>
'作用:將16進位制資料編碼轉化為字串,是Encode的逆過程
Public Function Decode(strDecode As String) As String
Dim i As Long
Dim strCode$ '儲存轉換後的編碼
Dim chrTmp$
On Error GoTo ErrProc
If Len(strDecode) Mod 4 <> 0 Then GoTo ErrProc
For i = 1 To Len(strDecode) Step 4
strCode = Mid$(strDecode, i, 4)
chrTmp$ = ChrW("&H" & strCode)
If chrTmp$ = "?" Then If strCode <> "003F" Then GoTo ErrProc
Decode = Decode & chrTmp$
Next
Exit Function
ErrProc:
Decode = strDecode
DealwithEvents "不能解析的訊息:" & strDecode
End Function
'</函式:Decode>
'*******************************************************************
1.C#中的程式碼
/// <summary>
/// <函式:Encode>
/// 作用:將字串內容轉化為16進位制資料編碼,其逆過程是Decode
/// 引數說明:
/// strEncode 需要轉化的原始字串
/// 轉換的過程是直接把字元轉換成Unicode字元,比如數字"3"-->0033,漢字"我"-->U+6211
/// 函式decode的過程是encode的逆過程.
/// </summary>
/// <param name="strEncode"></param>
/// <returns></returns>
public static string Encode(string strEncode)
{
string strReturn = "";// 儲存轉換後的編碼
foreach (short shortx in strEncode.ToCharArray())
{
strReturn += shortx.ToString("X4");
}
return strReturn;
}
/// <summary>
/// <函式:Decode>
///作用:將16進位制資料編碼轉化為字串,是Encode的逆過程
/// </summary>
/// <param name="strDecode"></param>
/// <returns></returns>
public static string Decode(string strDecode)
{
string sResult = "";
for (int i = 0; i < strDecode.Length / 4; i++)
{
sResult += (char)short.Parse(strDecode.Substring(i * 4, 4), global::System.Globalization.NumberStyles.HexNumber);
}
return sResult;
}
2.VB6中的程式碼
'*******************************************************************
'<函式:Encode>
'作用:將字串內容轉化為16進位制資料編碼,其逆過程是Decode
'引數說明:
'strSource 需要轉化的原始字串
Public Function Encode(strEncode As String) As String
Dim i As Long
Dim chrTmp$
Dim ByteLower$, ByteUpper$
Dim strReturn$ '儲存轉換後的編碼
For i = 1 To Len(strEncode)
chrTmp$ = Mid(strEncode, i, 1)
ByteLower$ = Hex$(AscB(MidB$(chrTmp$, 1, 1)))
If Len(ByteLower$) = 1 Then ByteLower$ = "0" & ByteLower$
ByteUpper$ = Hex$(AscB(MidB$(chrTmp$, 2, 1)))
If Len(ByteUpper$) = 1 Then ByteUpper$ = "0" & ByteUpper$
strReturn$ = strReturn$ & ByteUpper$ & ByteLower$
Next
Encode = strReturn$
End Function
'</函式:Encode>
'*******************************************************************
'*******************************************************************
'<函式:Decode>
'作用:將16進位制資料編碼轉化為字串,是Encode的逆過程
Public Function Decode(strDecode As String) As String
Dim i As Long
Dim strCode$ '儲存轉換後的編碼
Dim chrTmp$
On Error GoTo ErrProc
If Len(strDecode) Mod 4 <> 0 Then GoTo ErrProc
For i = 1 To Len(strDecode) Step 4
strCode = Mid$(strDecode, i, 4)
chrTmp$ = ChrW("&H" & strCode)
If chrTmp$ = "?" Then If strCode <> "003F" Then GoTo ErrProc
Decode = Decode & chrTmp$
Next
Exit Function
ErrProc:
Decode = strDecode
DealwithEvents "不能解析的訊息:" & strDecode
End Function
'</函式:Decode>
'*******************************************************************