C#编程,如何把含有,汉子,数字,字母以及标点符号的一段文字转换为16进制,并从16进制在转换回来 C#里如何对位数很长的数字(已处理为字符串)转化为16进制

作者&投稿:芷韩 (若有异议请与网页底部的电邮联系)
/// <summary> /// 转换16进制 /// </summary> /// <param name="str"></param> /// <returns></returns> public string StrToHex(string str) { string strTemp = ""; if (str == "") return ""; byte[] bTemp = System.Text.Encoding.Default.GetBytes(str); for (int i = 0; i < bTemp.Length; i++) { strTemp += bTemp[i].ToString("X"); } return strTemp; }

//16进制转回字符串
string xx = ""; string s = dataBuff; string[] cip = new string[s.Length / 2]; for (int i = 0; i < s.Length / 2; i++) { cip[i] = s.Substring(2 * i, 2); } foreach (string x in cip) { int scc = int.Parse(x.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); xx += ((char)scc).ToString(); }
这种方法是我在用的,适用于字母和数字,至于汉字没试过,不一定行。

你要的是这种???

 

如果是,代码如下:

foreach (byte item in Encoding.ASCII.GetBytes(textBox1.Text))

{

    textBox2.Text += item.ToString("X8") + " ";

}

 如果不是,请另外说明!



public string EncodingSMS(string s)
{
string result = string.Empty;

byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(s);
for(int i = 0; i < arrByte.Length; i++)
{
result += System.Convert.ToString(arrByte[i], 16); //Convert.ToString(byte, 16)把byte转化成十六进制string
}

return result;
}
public string DecodingSMS(string s)
{
string result = string.Empty;

byte[] arrByte = new byte[s.Length / 2];
int index = 0;
for(int i = 0; i < s.Length; i += 2)
{
arrByte[index++] = Convert.ToByte(s.Substring(i,2),16); //Convert.ToByte(string,16)把十六进制string转化成byte
}
result = System.Text.Encoding.Default.GetString(arrByte);

return result;

}

C#编程中,如何把textbox1内的一段16进制字符串,以16进制的形式发送给串口?~

给你一个C#写的串口调试软件,你先试试吧,看能不能满足你的要求


.NET 4.0 中可以引用 System.Numeric 类,用 BigInteger 这个类来进行计算(P.S. 据说有精度上的问题)。

一般的解决办法是自己写一个类型来储存这种超大数,当成 string 类型来处理,并自己写算法来对应加减乘除这些。

暂时只能想到一个效率很低的思路,这么大的数要直接转成16进制的话算法是很麻烦的,建议先转成2进制,用短除法(除法的本质是多次减法,当然如果题主算法好可以用蒙哥马利算法来直接做除法。当作 string 类型来计算,先截取最后一位,看够不够减2,够了就把减去的结果替换掉 string 最后一位;不够就再截取最后两位看,依次类推。除法就是反复做减法,直到最后一次减法结果要变负数为止,商和余数就出来了)。再把2进制转换成16进制就容易多了,从后往前每4位截断一下,最前面不足位用0补齐,然后每四位转换成16进制,最后拼接一下。