c#十进制整型变量直接写成十六进制数并存入byte数组中

zhuyihui01 2011-03-10 05:00:54
如题
eg
int nCount=2233;
最后要把2233原封不动的写入到byte[]中 而且写入的这个数是十六进制
...全文
974 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
string hexStr = "55 72 01 22 33 01 02 64"; byte[] bt = hexStr.Split(' ').Select(t => Convert.ToByte(t, 16)).ToArray();
zhangrunze1200 2012-12-06
  • 打赏
  • 举报
回复
我也遇到了这个问题 如何解决的呢?
remagon 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 vrhero 的回复:]
引用 13 楼 remagon 的回复:
C# code

int result;
int value = 22;
int length = value.ToString().Length;
for (int i = 0; i < length; i++)
{
result += value % 10 * (int)Math.Pow(16, i);
value = value /……
[/Quote]

你才没看明白吧,楼主说的就是22 变成22H 给byte[3]
vrhero 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 remagon 的回复:]
C# code

int result;
int value = 22;
int length = value.ToString().Length;
for (int i = 0; i < length; i++)
{
result += value % 10 * (int)Math.Pow(16, i);
value = value / 10;
}
[/Quote]
写这种代码的趁早改行...

楼主你说了半天还是没说明白...除非你所谓的十六进制数据是“字符串”,否则不存在什么转换问题...
remagon 2011-03-11
  • 打赏
  • 举报
回复

int result;
int value = 22;
int length = value.ToString().Length;
for (int i = 0; i < length; i++)
{
result += value % 10 * (int)Math.Pow(16, i);
value = value / 10;
}
zhuyihui01 2011-03-11
  • 打赏
  • 举报
回复
问题已解决 谢谢各位了!
zhuyihui01 2011-03-11
  • 打赏
  • 举报
回复
看来我是没说明白
单片机数据为1234、2345
发送内容为:0A5H、72H、01H、12H、34H、23H、45H、0C6H

12H、34H、23H、45H

22 变成22H 给byte[3]
friedDuck 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vrhero 的回复:]

干这行你一定要先明白一个道理...

神马这个进制那个进制都是给“人”看的,计算机只认识二进制,所有数值类型不可能有别的进制...
[/Quote]

其实还是有Decimal这种数值类型的,他能表示不以2为底的“十进制”。当然,存储起来还是要用“0、1”
lizhibin11 2011-03-11
  • 打赏
  • 举报
回复
b[3] = 22和b[3] = 0x16没有一丁点区别,一模一样,完全一致。
lizhibin11 2011-03-11
  • 打赏
  • 举报
回复
b[3] = 22和b[3] = 0x16没有一丁点区别,一模一样,完全一致。
vrhero 2011-03-11
  • 打赏
  • 举报
回复
干这行你一定要先明白一个道理...

神马这个进制那个进制都是给“人”看的,计算机只认识二进制,所有数值类型不可能有别的进制...
zhuyihui01 2011-03-11
  • 打赏
  • 举报
回复
比如说n=22 放到b[3]的效果要 b[3]=0x22
zhuyihui01 2011-03-11
  • 打赏
  • 举报
回复
可能我没说清楚 我用代码写一下
string hexStr="55 72 01 22 33 01 02 64";
string[] hexArr=hexStr.Split(' ');
nProducted = 2212;
nFailProduct = 24;
int n = nProducted/100;
byte[] b=new byte[hexArr.Length];//输出用的字节数组组
b[0] =0xA5;
b[1] = 0x72;
b[2] = 0x01;
b[3] = 0x22;
b[4] = 0x33;
b[5] = 0x01;
b[6] = 0x02;
b[7] = 0x64;
我要把整型 n 以16进制数放到b[3]中

种草德鲁伊 2011-03-10
  • 打赏
  • 举报
回复


int nCount = 2233;
byte[ ] byteArray = BitConverter.GetBytes(nCount);

lizhibin11 2011-03-10
  • 打赏
  • 举报
回复
直接写就是了,不管你想啥进制,最后都是二进制.
garfieldzf 2011-03-10
  • 打赏
  • 举报
回复
zhuyihui01 2011-03-10
  • 打赏
  • 举报
回复
2233 是可变数 根据获取的数据不同而改变

110,566

社区成员

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

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

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