将Byte*写入文件后,如何读出,并于Edit空间中显示出来?

qingwwei 2004-05-08 09:11:50
我将一段文字“Hi, China, Good Morning”(Byte*)加密后,长度为1115,直接写入文件,现在我想把他读出来,并在Edit下进行显示,并对Edit中内容长度进行统计,看是否相符。
现在问题是我怎么都不能完全读入。我该怎么解决?谢谢!!!
/////////////////////////////////////////////////////////////////////////
0?W *咹嗺
爞H0?D 1伵0伮 0+0&1$0 Uca0 *咹嗺

ca@163.com;0
*咹嗺
亐(i|藡0U窦&哹 dB櫟╒o淜EV釂E鱹?
0骵?罈遞 d徸 得=?嘃辳o?q# 群障递国0Ω璦^鵗xJ,H擑8﨣 箦丬巏e樽炡E鬞頴恧肧?*;喴0?u *咹嗺
0*咹嗺
€?X慏潱鬕緞ty?Vs?橾?睎? ?B_曮琁?燧?;Y蠭琬邻+杔砃?j爰o桃O-鄯?韼尞GS?蝂w隓皆"j戟
並簳?
蒴匶d抻斡I5頿C侞邂f*?}姠?w;ㄏ汮告┆?滭<黈?€?呋|8縀暓猜??渭J箵浄螿迿 詆?;碵L屃?~梸.<?陖赺?郏6?軳惙C陚?YW)?涵H土!8?妥~櫼
戌A} 簎V箶?<?满?铪庼W牴榅?佗跘茾馨 ?囀d较, ,赜甴\犟5傰?/欲H6$餴驇.籧瞒繣~?x!{N;"|uó?3?^5湞????筘跡?k7j犋?k颲L铨qh嶘\T?ㄞ麈榨禈4冄"啹v片3餮ンguc[舤梟
?x觌硟)旦崶yrC粈诼称Q孮 0灁蹮壭稨0??淜h?盗甼z嫵祜`p??碳铧 b?润-0痲踹?頂??鴕(!r(!?{簈滽l?l???|L"铠\8kMX2?l0P禙殼
聨包3旰2?癞坞幔N蝿4覀j僲??B鯩p懿鍿[?
? =攙H横?逷== 矷涷??鄵?饖盨?1
弲T崢贆?N9XQJS卧tO两踻Cv?呗+蠧媤*Dg\捻s纷5鑳聏"愚[譓敩zмA鹾?2?溏|+4n)"?o躓娽?M?尹哶6}?*O,鋧亂?埕鲚-埓>F*饥
渉V2硯?藍辮?d?;,香XQ稶菁v[9榁璻團?k?i蹑浾
///////////////////////////////////////////////////////////////
...全文
111 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qingwwei 2004-05-09
有了些头绪,但一些具体细节还没有实现。
谢谢,我在努力!
  • 打赏
  • 举报
回复
qingwwei 2004-05-09
有了些头绪,但一些具体细节还没有实现。
谢谢,我在努力!
  • 打赏
  • 举报
回复
qingwwei 2004-05-09
有了些头绪,但一些具体细节还没有实现。
谢谢,我在努力!
  • 打赏
  • 举报
回复
菜牛 2004-05-08
把你的写入和读出的代码贴出来看看。加密和解密不属于讨论范围吧。
  • 打赏
  • 举报
回复
qingwwei 2004-05-08
我以前曾试过使用广义字符转化函数,但是无法将原字符显示,内容全变了。以前考虑过 zhangnanonnet(鱼欢) 老哥的方法,觉得很麻烦,没有试,看来好试试使用zhangnanonnet(鱼欢)老哥的办法了,谢谢!
大家什么其他方法吗?
谢谢!
我两天之内结贴,谢谢大家!
  • 打赏
  • 举报
回复
zhangnanonnet 2004-05-08
给你一对转换的函数
// 转换2字节16进制的字符串到ASCII字符串
extern "C" BOOL pascal HextoAscii(char* sHex,char* sReply)
{
int iLen,i,j=0;
BYTE * lsData;
BYTE * lsReply;

if(sHex==NULL)
{
return FALSE;
}
iLen=strlen(sHex);
if((iLen%2!=0)||(iLen>1024))
{
return FALSE;
}
if(sReply==NULL)
{
return FALSE;
}

iLen=strlen(sHex);
lsData=new BYTE[iLen];
lsReply=new BYTE[iLen/2+1];
memcpy(lsData,sHex,iLen);
for(i=0;i<iLen;i+=2)
{
if(((lsData[i]>='0'&&lsData[i]<='9')||
(lsData[i]>='a'&&lsData[i]<='f')||
(lsData[i]>='A'&&lsData[i]<='F'))&&
((lsData[i+1]>='0'&&lsData[i+1]<='9')||
(lsData[i+1]>='a'&&lsData[i+1]<='f')||
(lsData[i+1]>='A'&&lsData[i+1]<='F'))
)
{
if(lsData[i]>='0'&&lsData[i]<='9')
lsReply[j] = lsData[i]-'0';
if(lsData[i]>='a'&&lsData[i]<='f')
lsReply[j] = lsData[i]-'a'+10;
if(lsData[i]>='A'&&lsData[i]<='F')
lsReply[j] = lsData[i]-'A'+10;
lsReply[j]=(lsReply[j]<<4)&0xf0;
if(lsData[i+1]>='0'&&lsData[i+1]<='9')
lsReply[j] |= lsData[i+1]-'0';
if(lsData[i+1]>='a'&&lsData[i+1]<='f')
lsReply[j] |= lsData[i+1]-'a'+10;
if(lsData[i+1]>='A'&&lsData[i+1]<='F')
lsReply[j] |= lsData[i+1]-'A'+10;
j++;
}
else
break;
}
lsReply[j]=0x00;
memcpy(sReply,lsReply,j+1);
delete lsReply;
delete lsData;
return TRUE;
}

// 转换ASCII字符串到2字节16进制的字符串
extern "C" BOOL pascal AsciitoHex(char* sAsc,int iLength,char* sReply)
{
int i,j=0;
BYTE ch1,ch2;
BYTE * lsData;
BYTE * lsReply;

if(sAsc==NULL)
{
return FALSE;
}
if(iLength>512)
{
return FALSE;
}
if(sReply==NULL)
{
return FALSE;
}

lsData=new BYTE[iLength];
lsReply=new BYTE[iLength*2+1];
memcpy(lsData,sAsc,iLength);
for(i=0;i<iLength;i++)
{
ch1=lsData[i]>>4; //高四位
ch2=lsData[i]&0x0f; //低四位
lsReply[j++]=(ch1>=0&&ch1<=9)?(ch1+0x30):(ch1+0x37);
lsReply[j++]=(ch2>=0&&ch2<=9)?(ch2+0x30):(ch2+0x37);
}
lsReply[j]=0x00;
memcpy(sReply,lsReply,j+1);
delete lsReply;
delete lsData;
return TRUE;
}
  • 打赏
  • 举报
回复
qingwwei 2004-05-08
长度是1109,不好意思
关键是怎么读入,那位大哥有一个比较好的方法?
谢谢!
  • 打赏
  • 举报
回复
UDX协议 2004-05-08
从文件中以byte方式,读出来,放到一个buff里面,我后解密得出“Hi, China, Good Morning”,再把这句话,用edit显示。

->如果直接把你的文件内容显示出来,就象你的问题中的文字一样,是乱码,因为你加密后,很可能不是可见字符。
  • 打赏
  • 举报
回复
相关推荐
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2004-05-08 09:11
社区公告
暂无公告