<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
    將一個字符串轉為二進制,再從二進制轉為原字符串。

       把字符串(可含中文字符)轉為二進制數的函數:ConvertStrToBin();把二進制數轉換為字符串的函數:ConvertBinToStr()。
       以下兩個函數亦可以對包含有中文字符的字符串進行處理,逆轉時亦可正常轉為中文。
    Function ConvertStrToBin(Value : string):string;//把字符串轉化為二進制數
    var tempHex : string[2];
        i : integer;
    begin
      Result := '';
      if trim(Value) = '' then Exit;
      tempHex := '';
      for i := 1 to Length(Value) do
      begin
        tempHex := IntToHex(Ord(Value[i]),2);//每個字符轉成兩位十六進制數
        Result := Result + BinToHexEachOther(tempHex,False);//十六進制轉成二進制
      end;
    end;

    Function ConvertBinToStr(Value : string):string; //把二進制數據轉化為字符串
    Var tempHex : string;
        i, tempInt : integer;
    begin
      Result := '';
      if trim(Value) = '' then Exit;
      tempHex := BinToHexEachOther(Value,true);//二進制轉成十六進制
      i := 0;
      Repeat
        begin
          i := i + 1;
          tempInt := HexCharToInt(tempHex[i]);
          i := i + 1;
          tempInt := tempInt * 16 + HexCharToInt(tempHex[i]);
           //以上將兩位十六進制數轉變為一個十進制數
          Result := Result + chr(TempInt); //轉成ASCII碼
        end;
      Until i >= length(tempHex)
    end;

    上兩個互逆的函數中要調用到的函數HexCharToInt()和BinToHexEachOther()如下:

    function BinToHexEachOther(ValueA : string; Action : Boolean) : string;
      //把二進制串轉換成十六進制串或相反
      var
        ValueArray1 : Array [0..15] of string[4];
        ValueArray2 : Array [0..15] of char;
        i : shortint;
    begin
        //數組初始化
        ValueArray1[0] := '0000';  ValueArray1[1] := '0001';  ValueArray1[2] := '0010';
        ValueArray1[3] := '0011';  ValueArray1[4] := '0100';  ValueArray1[5] := '0101';
        ValueArray1[6] := '0110';  ValueArray1[7] := '0111';  ValueArray1[8] := '1000';
        ValueArray1[9] := '1001';  ValueArray1[10] := '1010';  ValueArray1[11] := '1011';
        ValueArray1[12] := '1100';  ValueArray1[13] := '1101';  ValueArray1[14] := '1110';
        ValueArray1[15] := '1111';
        for i := 0 to 15 do
          if i >= 10 then ValueArray2[i] := chr(65 + (i - 10))
          else ValueArray2[i] := inttostr(i)[1];

        Result := '';
        if Action then
        begin //二進制串轉換成十六進制串
          if (Length(ValueA) MOD 4 <> 0) then
            ValueA := stringofchar('0',Length(ValueA) MOD 4) + ValueA;
          while (Length(ValueA) >= 4) do
          begin
            for i := 0 to 15 do
              if Copy(ValueA,1,4) = ValueArray1[i] then
                Result := Result + ValueArray2[i];
            ValueA := Copy(ValueA,5,Length(ValueA) - 4);
          end;
        end
        else begin //十六進制串轉換成二進制串
          while (Length(ValueA) >= 1) do
          begin
            for i := 0 to 15 do
              if Copy(ValueA,1,1) = ValueArray2[i] then
                Result := Result + ValueArray1[i];
            ValueA := Copy(ValueA,2,Length(ValueA) - 1);
          end;
        end;
    end;

    function HexCharToInt(HexToken : char):Integer;
    begin
    Result:=0;
    if (HexToken>#47) and (HexToken<#58) then       { chars 0....9 }
       Result:=Ord(HexToken)-48
    else if (HexToken>#64) and (HexToken<#71) then  { chars A....F }
       Result:=Ord(HexToken)-65 + 10;
    end;


    十六進制字串轉十進制又一法:
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var myint : integer;
    begin
      myint := StrToInt('$' + '3A'); // myint = 58
      showmessage(inttostr(myint));
    end;
    posted on 2005-11-02 05:37 konhon 優華 閱讀(22515) 評論(3)  編輯  收藏 所屬分類: Delphi

    Feedback

    # re: 字符串與二進制數之間的互相轉換 2007-09-20 22:03 burgess
    謝謝樓主  回復  更多評論
      

    # re: 字符串與二進制數之間的互相轉換 2009-03-05 08:38 啊啊啊
    非常不錯!寫的好,受益良多  回復  更多評論
      

    # re: 字符串與二進制數之間的互相轉換 [未登錄] 2013-05-31 23:28 aaa
    CF79AE6ADDBA60AD018347359BD144D2  回復  更多評論
      

    主站蜘蛛池模板: 69视频免费在线观看| 99免费视频观看| 可以免费观看一级毛片黄a| 在线观看日本亚洲一区| 成人性生活免费视频| 亚洲人成77777在线观看网| 国产1024精品视频专区免费| 亚洲三级高清免费| 国产精品免费_区二区三区观看| 亚洲国产精品成人综合色在线| 成年女人毛片免费视频| 亚洲精品蜜夜内射| 免费在线观看亚洲| 日韩精品无码免费专区午夜不卡| 亚洲福利视频一区| 18禁网站免费无遮挡无码中文 | 亚洲成a人片在线观| 国产免费女女脚奴视频网| 男人天堂2018亚洲男人天堂| 日韩高清免费在线观看| 免费无码AV一区二区| 国产亚洲A∨片在线观看| 蜜臀AV免费一区二区三区| 亚洲色丰满少妇高潮18p| 亚洲国产人成精品| 久久久久久一品道精品免费看| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲国产综合精品中文第一区| 久久九九兔免费精品6| 自拍偷自拍亚洲精品偷一| 夜夜春亚洲嫩草影院| jjizz全部免费看片| 美女视频黄.免费网址| 亚洲av中文无码乱人伦在线咪咕| xxxxx免费视频| 又长又大又粗又硬3p免费视频| 久久青草亚洲AV无码麻豆| 在线A级毛片无码免费真人 | 欧洲乱码伦视频免费国产| 久久久久亚洲Av片无码v| 啦啦啦手机完整免费高清观看|