关于十进制转16进制,然后分割

evilive1104 2014-07-30 03:13:18
private void numericUpDown1_ValueChanged(object sender, EventArgs e)

{

int i = Convert.ToInt32(numericUpDown1.Value);
int text1 = i * 20000;
this.numericUpDown1.Text = "";
text1.ToString(text1.ToString("X6"));//是否能转为16进制??



}

我想用对话框里的数字乘以20000,然后转为16进制,譬如十进制数为10,则需要将200000转为030D40,然后在报文中分割为0X03,0X0D,0X40三个十六进制数。
请各位高人指点,我这个函数该怎么改,然后怎么分割成三个十六进制数啊?
...全文
411 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 cuiweibin5 的回复:
#region 各进制数间转换 /// <summary> /// 实现各进制数间的转换。ConvertBase("15",10,16)表示将十进制数15转换为16进制的数。 /// </summary> /// <param name="value">要转换的值,即原值</param> /// <param name="from">原值的进制,只能是2,8,10,16四个值。</param> /// <param name="to">要转换到的目标进制,只能是2,8,10,16四个值。</param> public static string ConvertBase(string value, int from, int to) { try { int intValue = Convert.ToInt32(value, from); //先转成10进制 string result = Convert.ToString(intValue, to); //再转成目标进制 if (to == 2) { int resultLength = result.Length; //获取二进制的长度 switch (resultLength) { case 7: result = "0" + result; break; case 6: result = "00" + result; break; case 5: result = "000" + result; break; case 4: result = "0000" + result; break; case 3: result = "00000" + result; break; case 2: result = "000000" + result; break; case 1: result = "0000000" + result; break; } } return result; } catch { //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); return "0"; } } #endregion
看到这里我有点头晕目眩想吐的感觉。
evilive1104 2014-07-30
  • 打赏
  • 举报
回复
十分感谢楼上各位前辈指点
涛锅 2014-07-30
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
[quote=引用 6 楼 cuiweibin5 的回复:] #region 各进制数间转换 ...} #endregion
看到一大堆case, 不知道有padleft这个函数可以用,难道连for循环也不会么[/quote] 嗯,一般这样很规律的case,就得好好想想改代码了。
於黾 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 cuiweibin5 的回复:
#region 各进制数间转换 ...} #endregion
看到一大堆case, 不知道有padleft这个函数可以用,难道连for循环也不会么
by_wind 2014-07-30
  • 打赏
  • 举报
回复
int text1 = i * 20000; string s= text1.ToString("X6"); s就是你要的16进制字符串
threenewbee 2014-07-30
  • 打赏
  • 举报
回复
当然,整个代码本身都是多余的。
threenewbee 2014-07-30
  • 打赏
  • 举报
回复
switch (resultLength) { case 7: result = "0" + result; break; case 6: result = "00" + result; break; ... 好垃圾的代码 result = resultPad.PadLeft(8, '0');即可
cuiweibin5 2014-07-30
  • 打赏
  • 举报
回复
#region 各进制数间转换 /// <summary> /// 实现各进制数间的转换。ConvertBase("15",10,16)表示将十进制数15转换为16进制的数。 /// </summary> /// <param name="value">要转换的值,即原值</param> /// <param name="from">原值的进制,只能是2,8,10,16四个值。</param> /// <param name="to">要转换到的目标进制,只能是2,8,10,16四个值。</param> public static string ConvertBase(string value, int from, int to) { try { int intValue = Convert.ToInt32(value, from); //先转成10进制 string result = Convert.ToString(intValue, to); //再转成目标进制 if (to == 2) { int resultLength = result.Length; //获取二进制的长度 switch (resultLength) { case 7: result = "0" + result; break; case 6: result = "00" + result; break; case 5: result = "000" + result; break; case 4: result = "0000" + result; break; case 3: result = "00000" + result; break; case 2: result = "000000" + result; break; case 1: result = "0000000" + result; break; } } return result; } catch { //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); return "0"; } } #endregion
threenewbee 2014-07-30
  • 打赏
  • 举报
回复
科普: http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html 如果你想颠倒,就用 byte[] result = BitConverter.GetBytes(i).Reverse().ToArray();
threenewbee 2014-07-30
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
[quote=引用 1 楼 caozhy 的回复:] int i = 200000; byte[] result = BitConverter.GetBytes(i);
学习了.不过结果为什么是{40,0D,03,00}?高低字节顺序是反的.[/quote] 不同处理器不一样 Intel X86是小端序处理器(Little-endian)
於黾 2014-07-30
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
int i = 200000; byte[] result = BitConverter.GetBytes(i);
学习了.不过结果为什么是{40,0D,03,00}?高低字节顺序是反的.
於黾 2014-07-30
  • 打赏
  • 举报
回复
数字在计算机中存储,本来就都是2进制,显示成10进制或16进制那是显示的问题. 想把数字200000当做16进制转成字符串,text1.ToString("X6")不就转了么 然后循环一下,用substring方法依次取出2位来,放到string或string数组里 再Conver.ToInt32(string,16);就又把16进制表示的字符串转成数字了 你把这个数字装入byte中就可以了.
threenewbee 2014-07-30
  • 打赏
  • 举报
回复
int i = 200000; byte[] result = BitConverter.GetBytes(i);

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧