using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//byte[] bt = { 0x68, 0x12, 0xFE};
byte b1 = 0x68;
byte b2 = 0x12;
byte b3 = 0xFE;
byte[] bt = { b1, b2, b3 };
BitArray br = new BitArray(bt);
string strNum = "";
//for (int i = 16; i >= 0; i--)
for (int i = 0; i <= 23; i++)
{
if (br[i] == false)
strNum += "0";
else
strNum += "1";
}
Console.WriteLine(strNum);
int a = Convert.ToInt32(strNum, 2);
Console.WriteLine(a);
string mm = Convert.ToString(a);
Console.WriteLine(mm);
Console.Read();
}
}
}请大家阅读一下以上的程序,,
Console.WriteLine(strNum); 的输出为000101100100100001111111,,
想请问一下大家,,上面程序的读数为什么倒过来的,,
如果我想读出的是0x68即01101000,,0x00010100这样读下去....即对按原来的顺序读出
再对strNum变成十进制.
请解释下int a = Convert.ToInt32(strNum, 2);这句语句的意思.
THS
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//byte[] bt = { 0x68, 0x12, 0xFE};
byte b1 = 0x68;
byte b2 = 0x12;
byte b3 = 0xFE;
byte[] bt = { b1, b2, b3 };
BitArray br = new BitArray(bt);
string strNum = "";
//for (int i = 16; i >= 0; i--)
for (int i = 0; i <= 23; i++)
{
if (br[i] == false)
strNum += "0";
else
strNum += "1";
}
Console.WriteLine(strNum);
int a = Convert.ToInt32(strNum, 2);
Console.WriteLine(a);
string mm = Convert.ToString(a);
Console.WriteLine(mm);
Console.Read();
}
}
}请大家阅读一下以上的程序,,
Console.WriteLine(strNum); 的输出为000101100100100001111111,,
想请问一下大家,,上面程序的读数为什么倒过来的,,
如果我想读出的是0x68即01101000,,0x00010100这样读下去....即对按原来的顺序读出
再对strNum变成十进制.
请解释下int a = Convert.ToInt32(strNum, 2);这句语句的意思.
THS
解决方案 »
- (在线等)c#treeview连接server数据库动态生成树形目录
- URL里包含中文, HttpWebRequest的时候编码出问题了
- C#如何使用treeview显示ftp上的文件列表。如图所示[在线等]
- 窗体之间的传值问题
- 这个索引应该怎么写?
- for循环的次数很多速度很慢,用多线程可以提高速度吗??
- WebService的调用问题
- 用c#开发oracle数据库系统,请问访问数据库时我用OleDb呢--还是OracleClient呢?
- Winform 中如何添加一个动态的Icon?
- SkinForm皮肤插件的使用关于 SkinRichTextBox的使用
- 请求帮助
- 帮助:我能发布我自己做的视频么,是学习asp.net的
比如strNum为"110",如果按二进制转换成整数就是6,而按十进制转的话就是一白一十.
你的其它问题看不明白.
我想读取的是要按0x68,0x12,0xFE,即011010000001001011111110的然后再转化为十进制
谢谢各位帮忙想一想
该数组中的第一个字节表示 0 到 7 位,第二个字节表示 8 到 15 位,依此类推。每个字节的“最低有效位”表示最小索引值:"bytes[0] & 1" 表示位 0,"bytes[0] & 2" 表示位 1,"bytes [0] & 4" 表示位 2,等等。有了这个规则就可以输出日常习惯的结果了.
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//byte[] bt = { 0x68, 0x12, 0xFE};
byte b1 = 0x68;
byte b2 = 0x12;
byte b3 = 0xFE;
byte[] bt = { b1, b2, b3 };
BitArray br = new BitArray(bt);
string strNum = "";
//for (int i = 16; i >= 0; i--)
for (int i = 0; i < br.Length/8; i++)
{
for (int index = 8*i + 7; index >= 8*i; index--)
{
if (br[index] == false)
strNum += "0";
else
strNum += "1";
}
}
Console.WriteLine(strNum);
int a = Convert.ToInt32(strNum, 2);
Console.WriteLine(a);
string mm = Convert.ToString(a);
Console.WriteLine(mm);
Console.Read();
}
}
}
谢谢您结果是试出来,,,
我知道你是程序是一个字节一字节处理,,
但是我这个程序的目的是取bt里面任意连续的几位,例如5至10位,,7至16位,,12至20位,,,
请是是不是现在是不是要对字符串strNum进行加工了,,
请问有没有办法??
THS
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
byte b1 = 0x68;
byte b2 = 0x12;
byte b3 = 0xFE;
byte[] bt = { b1, b2, b3 };
BitArray br = new BitArray(bt);
BitArray _br = new BitArray(br.Length);//这个是正常的顺序
int _index = 0;
string strNum = "";
for (int i = 0; i < br.Length/8; i++)
{
for (int index = 8*i + 7; index >= 8*i; index--)
{
if (br[index] == false)
strNum += "0";
else
strNum += "1"; _br[_index] = br[index];//进行改正
_index++;//索引加加
}
}
string _strNum = null;
for (int i = 0; i < _br.Length; i++)
{
if (_br[i])
{
_strNum += "1";
}
else
{
_strNum += "0";
}
}
//输出两个字符串进行比较
Console.WriteLine(strNum);
Console.WriteLine(_strNum); int a = Convert.ToInt32(strNum, 2);
Console.WriteLine(a);
string mm = Convert.ToString(a);
Console.WriteLine(mm);
Console.Read();
}
}
}