[サンプル]の検索結果
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
- 警視庁の捜査資料がウィニーに流出 (2 PV)
- Mr.Children(ミスチル) (2 PV)
- ネット未来地図 ポスト・グーグル時代 20の論点 佐々木俊尚 (2 PV)
- 嬉野流開発者のたまごん(嬉野宏明)さんがソフト指し疑惑で将棋倶楽部24のアカウントを停止されてしまう #将棋 (2 PV)
- Microsoft OneNote(マイクロソフト ワンノート)- 文書作成ソフト (2 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (2 PV)
- エーハチネット(A8.net)、商品DBサービスを開始 (1 PV)
- [映画]スター・ウォーズ/フォースの覚醒が大ヒット (1 PV)
- 「チケキャン」閉鎖、ミクシィ子会社運営のチケット転売サイト #チケットキャンプ (1 PV)
- 剛力彩芽さんが「顔がすごい好き」と前澤社長の魅力を告白、「お金目当て」は下衆の勘繰りだった (1 PV)
今月のアクセスランキング TOP 10
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (10 PV)
- FC2WiFI (4 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (3 PV)
- 三井住友海上火災保険、一部業務停止命令の見通し (3 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3 PV)
- Microsoft OneNote(マイクロソフト ワンノート)- 文書作成ソフト (3 PV)
- アドセンス代替広告にアフィリエイト広告を表示する方法 (3 PV)
- [配布終了]MT4向けスキャルEA「Surfing Forex(サーフィンフォレックス)」Free版(0.01ロット固定、無料、使用期限無し) #海外FX (2 PV)
- Windowsストア 日本語 (2 PV)
- ヤフーの検索結果に広告表示できるオーバーチュア「スポンサードサーチ」 (2 PV)
アクセス統計
ディレクトリ
関連サイト



