1,c#中BitConverter 和 Convert用法区别:
BitConverter is specifically to convert to bytes[] and from bytes[]. Little-endian, and Big-endian are fine and dandy, but it's irrelevant since it should be the same way each time on that machine.
Convert methods are to change from type to type. Such as Double to Single.
2,HexStringToByteArray and ByteArrayToHexString conversion
byte[] bout = m5.ComputeHash(Encoding.UTF8.GetBytes(stmp));
string sout = BitConverter.ToString(bout);
sout = sout.Replace("-", "");
byte[] tout = HexStringToByteArray(sout);
public byte[] HexStringToByteArray(string s)
{
byte[] array = new byte[s.Length / 2];
char[] chararray = s.ToCharArray();
int i;
for (i = 0; i < s.Length / 2; i++)
{
array[i] = (byte)(((HexCharToNibble(chararray[2 * i]) << 4) & 0xF0) | ((HexCharToNibble(chararray[2 * i + 1]) & 0x0F)));
}
return array;
}
public string NibbleToHexString(byte nib)
{
string s;
if (nib < 10)
{
s = nib.ToString();
}
else
{
char c = (char)(nib + 55);
s = c.ToString();
}
return s;
}
public byte HexCharToNibble(char c)
{
byte value = (byte)c;
if (value < 65)
{
value = (byte)(value - 48);
}
else
{
value = (byte)(value - 55);
}
return value;
}
还有其他的将string转为bytes的方法:
MD5 m5 = new MD5CryptoServiceProvider();
string sts = "1555644596";
//string app = "app1";
//string ssc = "vlj58r8mclkz5qdmpmz3vb17d77ri028";
string[] tarr = { sts };//, app, ssc};
Array.Sort(tarr);
string stmp = string.Concat(tarr);
Debug.Log(stmp);
byte[] abyte = Encoding.ASCII.GetBytes(stmp);
byte[] ubyte = Encoding.UTF8.GetBytes(stmp);
byte[] bout = m5.ComputeHash(Encoding.UTF8.GetBytes(stmp));
string uout = Encoding.UTF8.GetString(bout);
string utmp = Encoding.UTF8.GetString(ubyte);
byte[] apei = Encoding.UTF8.GetBytes(uout);
string aout = Encoding.ASCII.GetString(bout);
string atmp = Encoding.ASCII.GetString(abyte);
以上方法转来转去的,可能会出现乱码。乱码打印出来一般是unicode编码。