关于c# 二进制字符串转byte[]数组的问题 请教各位大神

xiangfan12 2016-09-09 04:44:03
private byte[] getbyte(string codestr)
{
byte[] encodebyte = new byte[codestr.Length / 8];
for(int i=0;i<codestr.Length/8;i++)
{
encodebyte[i] = Convert.ToByte(codestr.Substring(i*8,8),16);
}
return encodebyte;
}

这个程序方法是想把二进制字符串转换为byte数组 比如 {1111111100000000}转换为byte[]{0xff,0x00}

但是为什么 老报错啊 感觉没啥问题啊

错误信息 是这个 值对于无符号的字节太大或太小

请教各位大神 能不能帮帮小弟 怎么改呢应该
...全文
968 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangfan12 2016-09-10
  • 打赏
  • 举报
回复
原来如此!谢谢各位大神的指点
crystal_lz 2016-09-09
  • 打赏
  • 举报
回复
进制 只是用字符串来显示上的一种形式而已 对于实际的数字而言没有进制一说 byte b = 255 和 byte b = 0xFF 完全等价 你需要的只是 把一个二进制的字符串 转换成数字 Convert.ToByte(codestr.Substring(i*8,8),2) 就行了 而你写的 Convert.ToByte(codestr.Substring(i*8,8),16) 则是在说 把111111100000这些当作 16进制的字符串连转换 不溢出才怪
xuzuning 2016-09-09
  • 打赏
  • 举报
回复
byte[]{0xff, 0x00} 不就是 byte[]{255, 0} 吗?
xiangfan12 2016-09-09
  • 打赏
  • 举报
回复
我是想把byte数组里的值转换为16进制啊 字符串里是二进制的
xuzuning 2016-09-09
  • 打赏
  • 举报
回复
encodebyte[i] = Convert.ToByte(codestr.Substring(i * 8, 8), 2); 你都说了是二进制,怎么还用 16 呢?

111,128

社区成员

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

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

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