关于算法的一个问题 请教一下高手

mihuXiaoLang 2010-05-19 03:58:47
由0,1组成的txt文件,但是是字符型的。每隔192个连续数字有一个回车。需要将这个文件中的一行读到程序里,用三个unsigned long int型保存。
...全文
99 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mihuXiaoLang 2010-05-20
  • 打赏
  • 举报
回复
感谢 各位的回帖

如果把他分成 6分呢 就可以了吧 我可以用一个结构来表示这6份吗 之后在吧这六份在转换成unsigned long int

这个可以用一个结构来表示6份吗 我试了一下 在转换的时候老出错 难道不可以吗?

像这种算法题 在转换的时候好像用 << 也好使 但是这个怎么做呢?
push0714 2010-05-19
  • 打赏
  • 举报
回复
3个unsigned long int 才96位,也保存不了你的192位二进制....

3个64位unsigned 才能保存。

我觉得,你这个数这么大,只能用16进制字符串来表示。


lirg8405 2010-05-19
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------
unsigned long long __fastcall StringToInt(String Str0)
{
unsigned long long tmp = 0;
for(int i=1,j=Str0.Length()-1; i<=Str0.Length(); ++i,--j)
{
if (Str0[i] == '1')
{
tmp += pow(2,j);
}
}
return tmp;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned long long int **num;
String Str0,value;
TStringList *List0;
List0 = new TStringList();
List0->LoadFromFile("D:\\测试文件.txt");
if (List0->Count == 0)
{
delete List0;
return;
}
num = new unsigned long long *[List0->Count];
for(int i=0; i<List0->Count; i++)
{
num[i] = new unsigned long long[3];
value = List0->Strings[i];
Str0 = value.SubString(1,64);
value.Delete(1,64);
num[i][0] = StringToInt(Str0);
Str0 = value.SubString(1,64);
value.Delete(1,64);
num[i][1] = StringToInt(Str0);
Str0 = value.SubString(1,64);
value.Delete(1,64);
num[i][2] = StringToInt(Str0);
}

//-----释放内存
for(int i=0; i<List0->Count; i++)
{
ShowMessage(num[i][0]);
ShowMessage(num[i][1]);
ShowMessage(num[i][2]);
delete[] num[i];
}
delete[] num;
delete List0;
}
//---------------------------------------------------------------------------
lhy 2010-05-19
  • 打赏
  • 举报
回复

unsigned __int64 j=0;
for(int i=0;i<64;i++)
{
if(str[i+1]=='1')
j++;
if(i<63)
j*=2;
}
周药师 2010-05-19
  • 打赏
  • 举报
回复
“怎么来截取 他的每64个字节 之后怎么把这些二进制 装换成长整形”
64个字节 之后怎么把这些二进制 ???

没有看懂 你要怎么转换?
mihuXiaoLang 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouzhangkui 的回复:]
引用楼主 mihuxiaolang 的回复:
由0,1组成的txt文件,但是是字符型的。每隔192个连续数字有一个回车。需要将这个文件中的一行读到程序里,


C/C++ code

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *MyList = new TStringList ;
……
[/Quote]

感谢您回帖 这个取文件的每行的数据我会 但是我在那个数据的截取和装换上出现了问题
怎么来截取 他的每64个字节 之后怎么把这些二进制 装换成长整形
周药师 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 mihuxiaolang 的回复:]
由0,1组成的txt文件,但是是字符型的。每隔192个连续数字有一个回车。需要将这个文件中的一行读到程序里,
[/Quote]

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *MyList = new TStringList ;
MyList->LoadFromFile("C:\\3860.txt") ;
if(MyList->Count>1)
Memo1->Lines->Add(MyList->Strings[0]) ; //第一行的数据

delete MyList ;
}
lhy 2010-05-19
  • 打赏
  • 举报
回复
得用 int64
lirg8405 2010-05-19
  • 打赏
  • 举报
回复
我想不到long int 和int好像是一样的,都是4个字节,32位的,怎么能保存64位的数据?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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