標籤:http io os ar for 資料 div sp on
A、 首先列出網上搜尋的一些資訊:
方法1:
System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();
byte[] inputBytes =converter.GetBytes(inputString);
string inputString = converter.GetString(inputBytes);
方法2:
string inputString = System.Convert.ToBase64String(inputBytes);
byte[] inputBytes = System.Convert.FromBase64String(inputString);
B、接著列出一些調試中出現的錯誤現象:
擷取的byte[]類型值,如下:
語句 |
傳回值 |
APPID = reader_ApplicationID.GetValue(0)as string; |
null |
APPID =System.Convert.ToString(arrAPPID); |
System.Byte[] |
APPID =System.Convert.ToBase64String(arrAPPID); |
KWB+Au5GRKGZ3XDuHSf9tA== |
System.Text.UnicodeEncoding convert =new System.Text.UnicodeEncoding(); APPID =convert.GetString(arrAPPID); |
)`~ u-26603 ?D輕?‘ (亂碼) |
APPID =Encoding.Default.GetString(arrAPPID); |
)`~ u-26603 ?D輕?‘ (亂碼) |
查看資料表,Oracle資料庫表中儲存的值為:29607E02EE4644A199DD70EE1D27FDB4
分析儲存結果為十六進位字元,編寫函數實現byte[]轉換成十六進位string功能即可。
private string Byte2String(byte[] arrByte)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in arrByte)
{
sb.Append(b > 15 ? Convert.ToString(b, 16) : ‘0‘ +Convert.ToString(b, 16));
}
return sb.ToString();
}
調用此函數實現byte[]到string的轉換,因為資料表中儲存值為大寫,所以利用ToUpper()方法轉換下得到。
APPID = Byte2String(arrAPPID).ToUpper();
(3) 根據擷取的string類型值,進行進一步的操作,例如:
OracleCommand cmd_UserID = conn.CreateCommand();
cmd_UserID.CommandType = CommandType.Text;
cmd_UserID.CommandText = "select USERID from ORA_ASPNET_USERS where LOWEREDUSERNAME=‘" + userName.ToLower() + "‘ and APPLICATIONID=‘" + APPID + "‘";
C#將byte[]轉換為string