手機簡訊轉成文字檔 |
答題得分者是:mieng
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
請問一下如何將我已經從手機備份到電腦裡面的簡訊轉換成一般的文字檔,我的手機是SIEMENS的,我看了http://www.yesky.com/20020701/1618435_1.shtml裡面的介紹,但是西門子的簡訊好像有多加了一些東西在前後,只有中間的部份可以用上面網址裡面的方法來弄,請問一下有無什麼方法可以解碼的?(ps.我對於unocode不熟...)謝謝各位了
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
以下是上面網址的完整程式碼
int ReturnHex(int Value)
{
switch (Value)
{
case 0:
Value=0x7f;
break;
case 1:
Value=0x3f;
break;
case 2:
Value=0x1f;
break;
case 3:
Value=0x0f;
break;
case 4:
Value=0x07;
break;
case 5:
Value=0x03;
break;
case 6:
Value=0x01;
break;
case 7:
Value=0x00;
break;
}
return Value;
}
//---------------------------------------------------------------------------
//英文解碼
String __stdcall DecodeEnglish (String InputStr)
{
unsigned char InStr[300];
char OutStr[300];
String str;
int j=0,i=0;
int Point=0;
int temp;
memset(InStr,0,301);
memset(OutStr,0,301);
for(int i=0;i<InputStr.Length();i=i 2)
{
str="0x" InputStr.SubString(i 1,2);
InStr[i/2]=StrToInt(str);
}
while(j<=InputStr.Length()/2)
{
if(Point==0)
OutStr[i]=InStr[j]&ReturnHex(Point);
else
OutStr[i]=((InStr[j]&ReturnHex(Point))<>(8-Point));
if(Point%7==0&&Point!=0)
Point=0;
else
Point=Point 1;
i ;
j=i-(i/8);
}
OutStr[12]=((InStr[12]&0x07)<<5)|(InStr[11]>>(8-5));
return AnsiString(OutStr);
}
//---------------------------------------------------------------------------
//英文編碼
String __stdcall EncodeEnglish(String InputStr)
{
int n,len,cur;
String tempstr,returnstr;
unsigned char mid1[2],mid2[2];
len=InputStr.Length();
n=0;
for(int i=1;i<=len;i )
{
if (i
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
文字轉16進制我是用sprintf和itoa兩個函式來進行轉換。
itoa 可以轉成任意進制 下面是轉換函式範例 String StrToHex(String InTxt)
{
unsigned char rb[255];
char *jjj="";
int iii;
String OutTxt="";//要設成空字串 OutTxt = "";//一定要加
sprintf(rb,"%s",InTxt.c_str());
for (int i=0;rb[i]!=0;i )
{
iii=rb[i];
itoa(iii,jjj,16);//轉成16進制,
OutTxt = OutTxt + (String)jjj + " ";
}
return OutTxt;
}
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
謝謝mieng,但是因為我讀進來的檔案內容並非單純的字串,而是像是亂碼的東西,所以用妳的function轉換出來的並非結果,請問一下這該如何做?謝謝
這是用UltraEdit讀出來的結果
(HEX模式)
0B 0B 02 0C 00 01 01 00 00 30 11 21 91 74 34 23 ; .........0.!t4#
00 01 07 91 88 96 23 04 80 15 04 0C 91 88 96 11 ; ...??....??
11 11 11 00 08 30 11 21 91 74 34 23 0E 59 7D 55 ; %....0.!t4#.Y}U
4A FF 01 81 EA 5D F1 4F 86 62 FF FF FF FF FF FF ; J.獧醥
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; FF ; (非HEX模式) 0!t4# ????% 0!t4#Y}UJ獧醥b
|
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
String StrToHex(String InTxt)
{
unsigned char rb[386];
char *jjj="";
int iii;
String OutTxt="";//要設成空字串 OutTxt = "";//一定要加
sprintf(rb,"%s",InTxt.c_str());
for (int i=0;i<386;i )
{
iii=rb[i];
itoa(iii,jjj,16);//轉成16進制,
OutTxt = OutTxt (String)jjj " ";
}
return OutTxt;
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
Memo1->Text=StrToHex(OpenDialog1->FileName);
}
44 3a 5c a4 e2 be f7 b3 71 b0 54 b3 6e c5 e9 5c a6 e8 aa f9 a4 6c 53 35 37 5c a4 e2 be f7 b3 c6 a5 f7 5c 32 30 30 33 2e 31 31 2e 31 38 5c 49 6e 62 6f 78 5c b6 c0 a8 71 b4 40 2d 30 34 2e 73 6d 69 0 6 0 8 f4 12 0 0 0 0 0 94 f4 12 0 4 42 6b 74 68 94 6b 74 ff ff ff ff b5 c2 68 74 c4 7f d1 77 4 0 0 0 3c 3 33 0 0 0 0 0 64 f7 12 0 3c f5 12 0 b4 33 46 0 0 e0 fd 7f 0 0 0 0 f4 3 21 0 4 0 0 0 a 0 0 0 a4 f4 12 0 d 7e d1 77 4 0 a 0 3c 3 33 0 53 8 42 0 a0 93 46 0 5a 23 42 0 d2 7 42 0 4 f5 12 0 54 8 42 0 a8 f4 12 0 90 47 96 0 4 0 0 0 c1 75 44 0 50 0 0 0 80 45 96 0 d8 f4 12 0 25 d 42 0 24 47 96 0 c7 93 40 0 4 0 0 0 14 47 96 0 69 91 40 0 14 47 96 0 7d 92 40 0 0 0 0 0 90 47 96 0 fc 4f 40 0 20 f5 12 0 ec 8e 40 0 0 0 0 0 0 0 0 0 f0 2c 96 0 dc 2b 96 0 f4 10 0 0 d1 9 42 0 f9 9 42 0 a0 93 46 0 1 a 42 0 64 f7 12 0 2 0 0 0 98 f5 12 0 0 0 0 0 a4 f5 12 0 cb c 42 0 98 f5 12 0 86 26 42 0 1 0 0 0 28 46 96 0 c 73 44 0 14 73 44 0 a8 ac 42 0 28 46 96 0 58 0 0 0 3c 3 33 0 0 0 40 0 f1 2a 42 0 0 0 0 0 0 0 0 0 0 0 0 0 e8 2b 這樣子讀出來的還是怪怪的,一開始就不對了...這是什麼原因...麻煩mieng了,謝謝!!
|
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |