掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Shift-jis⇔2進数 ができる関数 (ID:35892)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 以下のような物でどうでしょうか? function StrToBin(S: String): String; var i: Integer; Buf: String; ii: Integer; begin //SJIS -> 2進数 Result := ''; for i := 1 to Length(S) do begin SetLength(Buf,8); for ii := 8 downto 1 do begin Buf[ii] := IntToStr((Ord(S[i]) shr (8-ii)) mod 2)[1]; end; Result := Result + Buf; end; end; function BinToStr(S: String): String; var i: Integer; Buf: Byte; begin //2進数 -> SJIS Result := ''; Buf := 0; if Length(S) mod 8 = 0 then begin for i := 1 to Length(S) do begin if i mod 8 = 1 then Buf := 0; if S[i] = #$31 then begin if i mod 8 = 0 then begin Buf := Buf + 1; end else begin Buf := Buf + Trunc(Power(2,8 - (i mod 8))); end; end; if i mod 8 = 0 then Result := Result + AnsiChar(Buf); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var S,BS: String; begin //使用例 S := 'た'; BS := StrToBin(S); ShowMessage(BS);//1000001010111101 ShowMessage(BinToStr(BS));//た end; D2007までのDelphiを前提にしています。 D2009以降だと確実にコケます。 2進数 -> SJIS変換は途中に余計な文字があるとコケます。 (スペース等がある場合は事前にStringReplace等で取り除いてください)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.