[言語]の検索結果


1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。

C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。

#include <stdio.h>
#include <string.h>

void dec2bin(char src, char *dest);

const int buf_size = 9;

int main(void)
{
    char buf[buf_size]; /* 変換後の2進文字列を受け取るための領域 */
/*    char str1[] = "abcdefg"; */
    char str1[] = "あいうえお";
    char *cp;

    int num = 1;
    for (cp = str1; *cp; cp++) {    /* 文字数分処理 */
        memset(buf, '\0'sizeof(buf));
        dec2bin(*cp, buf);
        printf("%d:%s (0x%02.2X)\n", num, buf, 0x000000ff & *cp);
        num++;
    }

    return 0;
}

/* 1Byte(8bit)の10進数を2進数の文字列に変換 */
void dec2bin(char src, char *dest)
{
    const int bit_size = 8;
    int i;
    for (i = 0; i < bit_size; i++) {
        dest[i] = (0x80 & src) ? '1' : '0';
        src <<= 1;
    }
}

解きながら学ぶC言語
ソフトバンククリエイティブ 著者:柴田 望洋,肘井 真一,高木 宏典,赤尾 浩


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2253] Posted by kagahiro at 2012/12/21 17:23:17
0 point | Link (6) | Trackback (0) | Comment (0)

Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。

ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。

UTF-8では、

1バイト目の先頭ビットが0の場合は1バイト文字
1バイト目の先頭から3ビットが110の場合は2バイト文字
1バイト目の先頭から4ビットが1110の場合は3バイト文字
1バイト目の先頭から5ビットが11110の場合は4バイト文字
1バイト目の先頭から6ビットが111110の場合は5バイト文字
1バイト目の先頭から7ビットが1111110の場合は2バイト文字

という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。

以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。

#!/usr/bin/perl

use strict;
use warnings;

my $testAscii = "ABCDEFG";
my $testHira  = "あいうえお";
my $testKata  = "アイウエ";
my $testKanji = "愛々木";
my $testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";

print "length($testAscii) = ".length($testAscii), "\n";
print "strlen_utf8($testAscii) = ".strlen_utf8($testAscii), "\n";

print "length($testHira) = ".length($testHira), "\n";
print "strlen_utf8($testHira) = ".strlen_utf8($testHira), "\n";

print "length($testKata) = ".length($testKata), "\n";
print "strlen_utf8($testKata) = ".strlen_utf8($testKata), "\n";

print "length($testKanji) = ".length($testKanji), "\n";
print "strlen_utf8($testKanji) = ".strlen_utf8($testKanji), "\n";

print "length($testAll) = ".length($testAll), "\n";
print "strlen_utf8($testAll) = ".strlen_utf8($testAll), "\n";

exit;

# UTF-8でエンコードされた文字列の文字数を取得する。
sub strlen_utf8 {
    my ($text) = @_;

    my $textlen = length($text);
    my $pos = 0;
    my $count = 0;

    while ($pos < $textlen) {
        my $code = ord substr($text, $pos, 1); # 先頭のASCIIコード値を取得
        my $bytelen = _bytesize($code);
        $pos += $bytelen;
        $count++; # 文字数をカウント
    }

    return $count;
}

# 文字のバイト長を求める
sub _bytesize {
    my ($code) = @_;
    my $size = 1;
    if (0x80 & $code) { # 1バイト文字以外
        $size++;
        $code <<= 1;
        for my $i (2 .. 8) {
            last if (!(0x80 & $code));
            $size++;
            $code <<= 1;
        }
    }
    return $size;
}

strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、 _bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。

_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し 戻り値として返しています。

ゼロからわかる Perl言語超入門
技術評論社 著者:高橋 順子


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2243] Posted by kagahiro at 2012/12/12 11:56:21
1 point | Link (3) | Trackback (0) | Comment (1)

自然言語処理(しぜんげんごしょり、natural language processing、NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野。「計算言語学」(computational linguistics)も同じ意味だが、自然言語処理が工学的な視点からの言語処理をさすのに対して、計算言語学は言語学的視点を重視する手法をさす事が多い。データベース内の情報を自然言語に変換したり、自然言語の文章をより形式的な(コンピュータが理解しやすい)表現に変換するといった処理が含まれる。

自然言語処理の基礎技術にはさまざまなものがあるが、現在のところ、日本語を処理する基礎技術としては、形態素解析、構文解析、語義の曖昧性解消照応解析が主に研究されている。

自然言語処理 - Wikipedia
言語処理学会 The Association for Natural Language Processing
自然言語処理ツール
Python による日本語自然言語処理
Perl で自然言語処理

入門 自然言語処理
オライリージャパン 著者:Steven Bird,Ewan Klein,Edward Loper


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2240] Posted by kagahiro at 2012/12/09 22:59:04
0 point | Link (1) | Trackback (0) | Comment (0)

機械学習(きかいがくしゅう)とは、人工知能における研究課題の一 つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術や手法のこと。1959年にアーサー・サミュエルは機械学習を...
[2238] Posted by kagahiro at 2012/12/09 00:14:58
0 point | Link (10) | Trackback (0) | Comment (0)

Amazon.co.jpが電子書籍ストア「Kindleストア」をオープンし、日本語電子書籍の販売を開始した。既にiOS(iPhone、iPad)、Android向けの無料アプリが公開されており、購入した電子書籍はiOS(iPhone、iPad)、Andro...
[2232] Posted by kagahiro at 2012/10/25 17:28:48
0 point | Link (6) | Trackback (0) | Comment (0)

2038年問題とは、2038年1月19日3時14分7秒を過ぎると、コンピュータが誤動作する可能性があるとされる問題のこと。C言語の伝統的な実装ではtime_t型の範囲や精度はintとして実装されており、intは符号つき32ビットで...
[2224] Posted by kagahiro at 2012/09/13 15:20:37
0 point | Link (1) | Trackback (0) | Comment (0)

さくらインターネットの共用レンタルサーバーサービス「さくらのレンタルサーバ」の、月額125円から利用できるエントリープラン「ライト」が動的なウェブページを実現するスクリプト言語「PHP」に対応した。これによ...
[2220] Posted by kagahiro at 2012/08/08 16:44:46
0 point | Link (2) | Trackback (0) | Comment (0)

「Node Ninja」は、レンタルサーバー事業を展開しているファーストサーバが提供を開始した日本初のNode.js専用クラウドサービス。現在ベータ版として無料で提供されている。「Node Ninja」では、ハイパフォーマンスか...
[2207] Posted by kagahiro at 2012/06/05 22:35:26
0 point | Link (4) | Trackback (0) | Comment (0)

Processing(プロセッシング)は、イメージ、アニメーション、インタラクティブなグラフィックスをプログラムするためのオープンソースのプログラミング言語。紙にスケッチするように、すぐに結果が確認できることか...
[2190] Posted by kagahiro at 2012/05/22 16:56:25
0 point | Link (1) | Trackback (0) | Comment (0)

「iCodeChecker」は、C言語で作成されたソースコードに脆弱性が存在しないかどうかを検査することができるソースコードセキュリティ検査ツール。VMイメージ、パッケージ形式、ソースコード形式の3つの配布形式でダウ...
[2181] Posted by kagahiro at 2012/05/08 16:36:13
0 point | Link (0) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング TOP 10

  1. FC2まとめ (4 PV)
  2. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  3. 2ちゃんねる(2ch) (3 PV)
  4. 大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
  5. 無料ダイヤルアッププロバイダ「Soloot(ソルート)」 (2 PV)
  6. ほしい物リスト (2 PV)
  7. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
  8. 掲示板CGI ThreadPlus 1.2 のリリース (2 PV)
  9. RDB(リレーショナルデータベース) (2 PV)
  10. 入金0円ですぐにFXが始められる初心者におすすめの海外FXブローカー「XM」 #MT4 #MT5 #口座開設 (2 PV)

今月のアクセスランキング TOP 10

  1. FC2まとめ (12 PV)
  2. 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
  3. 掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
  4. 「Kindle for the Web」 (5 PV)
  5. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (5 PV)
  6. Jipanguの配布は終了しました (4 PV)
  7. [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (4 PV)
  8. Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
  9. 「さくらのクラウド」のオプションサービスで「専有ホスト」の提供を開始 (3 PV)
  10. ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (3 PV)

アクセス統計

ディレクトリ

関連サイト