[サンプル]の検索結果
Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。
- sprintf関数で10進数を16進文字列に変換
- pack関数で16進文字列をバイナリーにパック
- unpack関数で2進文字列に変換
例えば、文字列の先頭文字のASCIIコード値(10進数)を取得し、それを2進文字列に変換に変換する場合は、 次のようなコードになります。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstr($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# 10進数を2進文字列に変換する関数
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
10進数を単に2進文字列に変換するだけならこれでも構わないのですが、ビット演算子を使ってビットのオン・オフを判定して、 2進文字列を作成していく方法もあります。以下のコードはその実装例です。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstrR($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# ビット演算で10進数を2進文字列に変換する関数
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
ここで問題になるのはどちらの方法が処理速度が優れているかということですが、以下のコードのプロファイルを取ると・・・
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = '';
for my $j (1 .. 10000) {
$str = _bitstr($asciicode, 8);
$str = _bitstrR($asciicode, 8);
}
print "str = $str\n"; # for debug
exit;
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
C:\xampp\htdocs\sample>perl -d:Dprof bitstr3.pl
str = 01000001
C:\xampp\htdocs\sample>dprofpp
Total Elapsed Time = 0.018988 Seconds
User+System Time = 0.016988 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
223. 0.038 0.038 10000 0.0000 0.0000 main::_bitstr
47.0 0.008 0.008 10000 0.0000 0.0000 main::_bitstrR
0.00 - -0.000 1 - - strict::import
0.00 - -0.000 1 - - warnings::import
0.00 - -0.000 1 - - strict::bits
0.00 - -0.000 2 - - main::BEGIN
やはり、ビット演算で2進文字列を作成するほうが早いようです。
プログラミングPerl〈VOLUME1〉
オライリー・ジャパン 著者:ラリー ウォール,ジョン オーワント,トム クリスチャンセン
amazon.co.jpのカスタマーレビューを見る
powered by amalink
PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。
mailmform.phpを実行すると入力フォームが表示され。送信ボタンを押す(クリック)すると入力した内容がメール送信されます。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプルメールフォーム</title>
</head>
<body>
<h2>サンプルメールフォーム</h2>
<p>$message</p>
<form action="mailform.php" method="post">
<input type="hidden" name="proc" value="send">
件名:<br />
<input type="text" name="subject" size="50" value="${formdata['subject']}" /><br />
名前:<br />
<input type="text" name="name" size="50" value="${formdata['name']}" /><br />
メールアドレス:<br />
<input type="text" name="from" size="50" value="${formdata['from']}" /><br />
本文:<br />
<textarea name="body" cols="50" rows="10">${formdata['body']}</textarea><br />
<br />
<input type="submit" value="送信" />
</form>
</body>
</html>
EOF;
exit();
}
// メール送信
function _send() {
// パラメータ取得
$formdata = array();
$formdata['subject'] = isset($_POST['subject']) ? $_POST['subject'] : '';
$formdata['name'] = isset($_POST['name']) ? $_POST['name'] : '';
$formdata['from'] = isset($_POST['from']) ? $_POST['from'] : '';
$formdata['body'] = isset($_POST['body']) ? $_POST['body'] : '';
// 入力チェック
if ($formdata['subject'] == '') {
_input_form($formdata, '件名を入力してください');
}
if ($formdata['name'] == '') {
_input_form($formdata, '名前を入力してください');
}
if ($formdata['from'] == '') {
_input_form($formdata, 'メールアドレスを入力してください');
}
else {
if (!preg_match('/^[-+\\w]+(\\.[-+\\w]+)*@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]{2,6}$/i', $formdata['from'])) {
_input_form($formdata, '正しいメールアドレスを入力してください');
}
}
if ($formdata['body'] == '') {
_input_form($formdata, '本文を入力してください');
}
// 送信
$header = "From: " . mb_encode_mimeheader($formdata['name']) . ' <' . $formdata['from'] . '>';
$result = mb_send_mail(MAILTO, $formdata['subject'], $formdata['body'], $header);
if ($result) {
_input_form($formdata, 'メールを送信しました');
}
else {
_input_form($formdata, 'メール送信に失敗しました');
}
}
?>
これもウェブデザインのレイアウトの参考に
今回は、ウェブデザインのレイアウトに役立つサイトをいくつかご紹介します。 そのまま使えるレイアウトのサンプルや、いい感じのスクリプト、レイアウトの参考になりそうなインスピレーション系などを集めてみました。
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (89 PV)
- 「Repeat K」高値安値の中間レートを基準に逆張りポジションを持つMT4向けリピート系(ナンピン)無料EA #自動売買 (34 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (10 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (5 PV)
- SQLのSELECT文でn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) (4 PV)
- MT4向けオープンソースナンピンマーチンEA「Automaton」 (3 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (3 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (3 PV)
- [Perl]メールフォームCGIの作り方 (2 PV)
- 自作のMT5向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)の一覧 #MT5 #FX (2 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1701 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (280 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (237 PV)
- MT4向けオープンソースナンピンマーチンEA「Automaton」 (136 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (134 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (131 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (128 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」オープンソースライセンス(GPL3)で公開 #ドル円 (123 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (105 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (99 PV)
アクセス統計
ディレクトリ
関連サイト