<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
 <channel>
  <title>語句ログ - ニュース、プログラミング、システムトレードの用語解説</title>
  <link>https://59log.com/</link>
  <description>日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説</description>
  <lastBuildDate>Sun, 03 May 2026 17:13:00 +0900</lastBuildDate>
  <pubDate>Sun, 03 May 2026 17:13:00 +0900</pubDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>59Tracker 3.2</generator>
  <item>
    <title>人気ナンピンマーチンEA「NPNM_v3」向けサンプルセットファイル</title>
    <description>&lt;p&gt;&lt;strong&gt;欲ブタさん(https://twitter.com/buhibuhi_FX)が以前無料配布（現在無料配布は終了）されていたNPNM_v3向けのサンプルセットファイル（無料）です。（最新版のNPNMはSagi Jungle で8,500円（内税）で販売されています。「&lt;a href=&quot;http://www.sagi-jungle.com/?pid=165188377&quot; target=&quot;_blank&quot;&gt;NPNM&lt;/a&gt;」）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;あくまでサンプルですので最適化しているとは到底言えませんが、まずは一歩踏み出すための足場にしていただければと思います。&lt;/p&gt;&lt;p&gt;デフォルト設定からの基本的な変更点は以下の通りですが、下記以外にも銘柄（通貨ペア）に応じて値幅等の変更を行っています。&lt;br&gt;&lt;br&gt;資金管理無し&lt;br&gt;最大ナンピン数 150 --&gt; 5&lt;br&gt;トレール有り&lt;br&gt;短期間の同方向の連続エントリー回避有り&lt;br&gt;エントリー無視期間 30 --&gt; 120&lt;/p&gt;&lt;p&gt;&lt;b&gt;※セットファイルでは「両建てあり」になっていますが、トレンドと思われる方向で片側運用するのが良さそうです。デモフォワードから判断すると、多少逆行されたくらいであれば、ナンピンマーチンで逃げることができます。（2022/04/30 追記）&lt;/b&gt;&lt;/p&gt;&lt;h3&gt;Forex（外国為替）用セットファイル&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/ea/NPNM/NPNM_v3_Forex.zip&quot;&gt;NPNM_v3_Forex(外国為替)のダウンロード&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;NPNM_v3_Forex.set&lt;br&gt;&lt;/p&gt;&lt;h3&gt;ゴールド用セットファイル&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/ea/NPNM/NPNM_v3_XAUUSD.zip&quot;&gt;NPNM_v3_XAUUSD(ゴールド)のダウンロード&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;NPNM_v3_XAUUSD.set&lt;br&gt;NPNM_v3_XAUUSD_Exness.set&lt;br&gt;&lt;/p&gt;&lt;p&gt;ゴールドのナンピン間隔公差、ンピンマ決済幅、トレール幅(point)を 500 から 600に変更しました。(2022/01/29)&lt;/p&gt;&lt;p&gt;上記のセットファイルを使用したデモフォワードをゴゴジャンの「REAL TRADE」で公開しています。&lt;br&gt;&lt;a href=&quot;https://real-trade.tech/en/accounts/46848&quot; target=&quot;_blank&quot;&gt;NPNM_v3 デモフォワード - kagahiro name 's MT4&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;とりあえず、Forex（外国為替）とゴールド（金）だけですが、今後株価指数（ダウ、日経）、仮想通貨（暗号資産）なども追加していく予定です。&lt;/p&gt;&lt;p&gt;&lt;b&gt;株価指数のサンプルセットファイルを追加しました。(2022/1/8)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;株価指数についてはブローカーによって少数桁が異なる場合もあるので、値幅を指定しているパラメーターは調整が必要です。また、最小取引数量も1ロットだったり0.1ロットだったり0.01ロットだったりします。&lt;/p&gt;&lt;p&gt;サンプルセットファイルでは、JP225が少数桁 0、US30が少数桁 2を前提にしていますが、そうでないブローカーもあります。ブローカーの少数桁に合わせて以下のパラメーターを変更してください。&lt;/p&gt;&lt;p&gt;MaxSpreadPoint&lt;br&gt;SlippagePoint&lt;br&gt;ナンピン間隔初項&lt;br&gt;ナンピン間隔公差&lt;br&gt;初期ポジション利確幅&lt;br&gt;ンピンマ決済幅&lt;br&gt;トレール幅(point)&lt;br&gt;トレール最低利益幅(point)&lt;br&gt;&lt;/p&gt;&lt;h3&gt;株価指数（日経平均、ダウ）用セットファイル&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/ea/NPNM/NPNM_v3_Stock.zip&quot;&gt;NPNM_v3_Stock(株価指数)のダウンロード&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;NPNM_v3_jp225.set&lt;br&gt;NPNM_v3_us30.set&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Exness用だけですがビットコインのサンプルセットファイルを追加しました。(2022/1/16)&lt;/b&gt;&lt;/p&gt;&lt;h3&gt;ビットコイン用セットファイル（Exness）&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/ea/NPNM/NPNM_v3_BTCUSD.zip&quot;&gt;NPNM_v3_BTCUSD(ビットコイン)のダウンロード&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;NPNM_v3_BTCUSD_Exness.set&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;ゴールド（XAUUSD）高火力設定（当社比）のサンプルセットファイルを追加しました。（2022/6/13）&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/ea/NPNM/NPNM_v3_Gold_HighFirepower.zip&quot;&gt;NPNM_v3_Gold_HighFirepower(ゴールド)のダウンロード&lt;/a&gt;&lt;/p&gt;&lt;p&gt;NPNM_v3_Gold_HighFirepower.set&lt;br&gt;NPNM_v3_XAUUSD_Exness_HighFirepower.set&lt;br&gt;&lt;/p&gt;&lt;h3&gt;欲ブタさん関連サイト&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;http://www.sagi-jungle.com/?pid=165188377&quot; target=&quot;_blank&quot;&gt;NPNM - Sagi Jungle&lt;/a&gt;（NPNMの購入はこちらから）&lt;br&gt;&lt;a href=&quot;https://twitter.com/buhibuhi_FX&quot; target=&quot;_blank&quot;&gt;欲ブタさんのTwitterアカウント&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.amazon.co.jp/%E3%83%87%E3%82%A4%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89-%E3%82%AA%E3%83%AA%E3%83%90%E3%83%BC-%E3%83%99%E3%83%AC%E3%82%B9/dp/4822242978?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=3TM41JZEMD04N&amp;keywords=%E3%83%87%E3%82%A4%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89&amp;qid=1655792780&amp;sprefix=%E3%83%87%E3%82%A4%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%2Caps%2C826&amp;sr=8-5&amp;linkCode=li3&amp;tag=aaaaaaee-22&amp;linkId=5f4b8a30f8f80d6664190917094a8627&amp;ref_=as_li_ss_il&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=4822242978&amp;Format=_SL250_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=aaaaaaee-22&quot; &gt;&lt;/a&gt;&lt;img src=&quot;https://ir-jp.amazon-adsystem.com/e/ir?t=aaaaaaee-22&amp;l=li3&amp;o=9&amp;a=4822242978&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3196#link&quot; target=&quot;_blank&quot;&gt;Link(6)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3196#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3196#comment&quot; target=&quot;_blank&quot;&gt;Comment(7)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=FX&quot; title=&quot;FX&quot;&gt;FX&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=EA&quot; title=&quot;EA&quot;&gt;EA&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E7%84%A1%E6%96%99&quot; title=&quot;無料&quot;&gt;無料&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%8A%E3%83%B3%E3%83%94%E3%83%B3%E3%83%9E%E3%83%BC%E3%83%81%E3%83%B3&quot; title=&quot;ナンピンマーチン&quot;&gt;ナンピンマーチン&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%90%E3%83%83%E3%82%AF&quot; title=&quot;キャッシュバック&quot;&gt;キャッシュバック&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%AC%B2%E3%83%96%E3%82%BF&quot; title=&quot;欲ブタ&quot;&gt;欲ブタ&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=USDJPY&quot; title=&quot;USDJPY&quot;&gt;USDJPY&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=EURUSD&quot; title=&quot;EURUSD&quot;&gt;EURUSD&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=GBPUSD&quot; title=&quot;GBPUSD&quot;&gt;GBPUSD&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=XAUUSD&quot; title=&quot;XAUUSD&quot;&gt;XAUUSD&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89&quot; title=&quot;ゴールド&quot;&gt;ゴールド&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=3196</link>
    <pubDate>Mon, 03 Jan 2022 22:34:15 +0900</pubDate>
  </item>
  <item>
    <title>ナンピンEA「Nanpin K」のサンプルセットファイルを公開</title>
    <description>&lt;p&gt;&lt;strong&gt;レンジ相場向けナンピンEA「Nanpin K」のサンプルセットファイルをいくつか公開しました。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;必ずしも最適化されているとは言えませんが、とりあえず始めるためのスタートラインにはなると思っています。&lt;/p&gt;&lt;p&gt;Forex向けセットファイルはどのブローカーでも使えると思いますが、GOLD（XAUUSD）や株価指数（US30、JP225）、BTCUSDはブローカによって設定が異なります。&lt;/p&gt;&lt;p&gt;GOLD（XAUUSD）や株価指数（US30、JP225）、BTCUSDのセットファイルがブローカーごとになっている理由は、GOLD（XAUUSD）、株価指数（US30、JP225）、BTCUSDなどは、ブローカーによってポイントの単位が違っているためです。&lt;/p&gt;&lt;p&gt;そのため、ブローカーが違う場合は、そのブローカー用の設定ファイルを使用していただく必要があります。&lt;/p&gt;&lt;h3&gt;Forex向けセットファイル&lt;/h3&gt;NanpinK_ES30.set&lt;br&gt;NanpinK_ES40.set&lt;br&gt;NanpinK_ES50.set&lt;br&gt;&lt;br&gt;&lt;h3&gt;XMのGOLD向けセットファイル&lt;/h3&gt;NanpinK_GOLD_XM.set&lt;br&gt;&lt;br&gt;&lt;h3&gt;XMのJP225Cash向けセットファイル&lt;/h3&gt;NanpinK_JP225_XM.set&lt;br&gt;&lt;br&gt;&lt;h3&gt;XMのUS30Cash向けセットファイル&lt;/h3&gt;NanpinK_US30_XM.set&lt;br&gt;&lt;br&gt;&lt;h3&gt;ExnessのXAUUSD向けセットファイル&lt;/h3&gt;NanpinK_XAUUSD_Exness.set&lt;br&gt;&lt;br&gt;&lt;h3&gt;ExnessのBTCUSD向けセットファイル&lt;/h3&gt;NanpinK_BTCUSD_Exness.set&lt;br&gt;&lt;p&gt;&lt;big&gt;&lt;b&gt;&lt;a href=&quot;https://59log.com/ea/NanpinK/NanpinK_setfile.zip&quot; target=&quot;_blank&quot;&gt;セットファイル（NanpinK_setfile.zip）のダウンロード&lt;/a&gt;&lt;/big&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3179#link&quot; target=&quot;_blank&quot;&gt;Link(4)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3179#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=3179#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=FX&quot; title=&quot;FX&quot;&gt;FX&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=EA&quot; title=&quot;EA&quot;&gt;EA&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%8A%E3%83%B3%E3%83%94%E3%83%B3&quot; title=&quot;ナンピン&quot;&gt;ナンピン&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%89%E3%83%AB%E5%86%86&quot; title=&quot;ドル円&quot;&gt;ドル円&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E8%87%AA%E5%8B%95%E5%A3%B2%E8%B2%B7&quot; title=&quot;自動売買&quot;&gt;自動売買&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%89%E3%83%AB%E5%86%86&quot; title=&quot;ドル円&quot;&gt;ドル円&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=USDJPY&quot; title=&quot;USDJPY&quot;&gt;USDJPY&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=GOLD&quot; title=&quot;GOLD&quot;&gt;GOLD&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=BTCUSD&quot; title=&quot;BTCUSD&quot;&gt;BTCUSD&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%93%E3%83%83%E3%83%88%E3%82%B3%E3%82%A4%E3%83%B3&quot; title=&quot;ビットコイン&quot;&gt;ビットコイン&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=MT4&quot; title=&quot;MT4&quot;&gt;MT4&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E9%80%86%E5%BC%B5%E3%82%8A&quot; title=&quot;逆張り&quot;&gt;逆張り&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=3179</link>
    <pubDate>Thu, 23 Sep 2021 11:35:35 +0900</pubDate>
  </item>
  <item>
    <title>[C言語]2進数文字列を10進数の整数値に変換する関数</title>
    <description>&lt;p&gt;10進数を2進数文字列に変換する関数は前に作成してますが、逆に「1101」「10110000」などの2進数文字列を10進数の整数値に変換するC言語用の関数がなかったので作成してみました。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bin2dec(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*src);&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;binstr1[]&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;1101&amp;quot;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;13&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;binstr2[]&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;10110000&amp;quot;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;176&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;binstr3[]&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;1000000100000000&amp;quot;&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;33024&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;bin2dec(binstr1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;%s:%d(0x%02.2X)\n&amp;quot;&lt;/span&gt;,&amp;nbsp;binstr1,&amp;nbsp;dec,&amp;nbsp;dec);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;bin2dec(binstr2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;%s:%d(0x%02.2X)\n&amp;quot;&lt;/span&gt;,&amp;nbsp;binstr2,&amp;nbsp;dec,&amp;nbsp;dec);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;bin2dec(binstr3);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;%s:%d(0x%02.2X)\n&amp;quot;&lt;/span&gt;,&amp;nbsp;binstr3,&amp;nbsp;dec,&amp;nbsp;dec);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;2進数文字列を10進数に変換&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;10000000&amp;nbsp;-&amp;gt;&amp;nbsp;128,&amp;nbsp;1000&amp;nbsp;-&amp;gt;&amp;nbsp;8,&amp;nbsp;1000000000000000&amp;nbsp;-&amp;gt;&amp;nbsp;32768&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bin2dec(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*src)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;dec&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(;;)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(*src&amp;nbsp;==&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'1'&lt;/span&gt;)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec&amp;nbsp;|=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!*src)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;break&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;dec;&lt;br&gt;}&lt;/p&gt;&lt;p&gt;&lt;strong&gt;実行結果&lt;/strong&gt;&lt;br&gt;$ ./bin2dec&lt;br&gt;1101:13(0x0D)&lt;br&gt;10110000:176(0xB0)&lt;br&gt;1000000100000000:33024(0x8100)&lt;br&gt;&lt;/p&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2325#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2325#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2325#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=C%E8%A8%80%E8%AA%9E&quot; title=&quot;C言語&quot;&gt;C言語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=2%E9%80%B2%E6%95%B0&quot; title=&quot;2進数&quot;&gt;2進数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2325</link>
    <pubDate>Wed, 03 Jul 2013 00:10:55 +0900</pubDate>
  </item>
  <item>
    <title>[C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード</title>
    <description>&lt;p&gt;C言語のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。そこで半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。&lt;/p&gt;&lt;p&gt;以下はそのコードです。&lt;a href=&quot;http://59log.com/?func=detail&amp;id=2323&quot;&gt;[C言語]UTF-8でエンコードされた文字列の文字数を取得するコード&lt;/a&gt;と同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*substr_utf8(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;offset,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;len);&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;_bytesize(&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testStr&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;strBuf[&lt;span class=&quot;src_digit&quot;&gt;256&lt;/span&gt;];&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(strBuf,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;sizeof&lt;/span&gt;&amp;nbsp;strBuf);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;substr_utf8($testStr,&amp;nbsp;0,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;%s\n&amp;quot;&lt;/span&gt;,&amp;nbsp;substr_utf8(strBuf,&amp;nbsp;testStr,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;5&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;substr_utf8($testStr,&amp;nbsp;3,&amp;nbsp;3)&amp;nbsp;=&amp;nbsp;%s\n&amp;quot;&lt;/span&gt;,&amp;nbsp;substr_utf8(strBuf,&amp;nbsp;testStr,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;3&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;substr_utf8($testStr,&amp;nbsp;10,&amp;nbsp;4)&amp;nbsp;=&amp;nbsp;%s\n&amp;quot;&lt;/span&gt;,&amp;nbsp;substr_utf8(strBuf,&amp;nbsp;testStr,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;10&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;4&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;substr_utf8($testStr,&amp;nbsp;13,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;%s\n&amp;quot;&lt;/span&gt;,&amp;nbsp;substr_utf8(strBuf,&amp;nbsp;testStr,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;13&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;5&lt;/span&gt;));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;UTF-8でエンコードされた文字列の部分文字列を取り出す&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;substr_utf8&amp;nbsp;(文字列式,&amp;nbsp;オフセット,&amp;nbsp;長さ）*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*substr_utf8(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;offset,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;len)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;srclen&amp;nbsp;=&amp;nbsp;strlen(src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;pos&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;count&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*cp&amp;nbsp;=&amp;nbsp;dest;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;while&lt;/span&gt;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code&amp;nbsp;=&amp;nbsp;*(src&amp;nbsp;+&amp;nbsp;pos);&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;ASCIIコード値を取得&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bytelen&amp;nbsp;=&amp;nbsp;_bytesize(code);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(count&amp;nbsp;&amp;gt;=&amp;nbsp;offset&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;count&amp;nbsp;&amp;lt;&amp;nbsp;(offset&amp;nbsp;+&amp;nbsp;len))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memcpy(cp,&amp;nbsp;(src&amp;nbsp;+&amp;nbsp;pos),&amp;nbsp;bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp&amp;nbsp;+=&amp;nbsp;bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*cp&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'\0'&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos&amp;nbsp;+=&amp;nbsp;bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count++;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字数をカウント&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;dest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字のバイト長を求める&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;_bytesize(&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;i;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;code)&amp;nbsp;{&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;1バイト文字以外&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;2&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;8&lt;/span&gt;;&amp;nbsp;i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;code))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;break&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;実行結果&lt;/strong&gt;&lt;br&gt;$ ./substr_utf8&lt;br&gt;substr_utf8($testStr, 0, 5) = ABCDE&lt;br&gt;substr_utf8($testStr, 3, 3) = DEF&lt;br&gt;substr_utf8($testStr, 10, 4) = えおアイ&lt;br&gt;substr_utf8($testStr, 13, 5) = イウエオ愛&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2324#link&quot; target=&quot;_blank&quot;&gt;Link(3)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2324#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2324#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=C%E8%A8%80%E8%AA%9E&quot; title=&quot;C言語&quot;&gt;C言語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=UTF8&quot; title=&quot;UTF8&quot;&gt;UTF8&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=substr&quot; title=&quot;substr&quot;&gt;substr&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E5%88%97&quot; title=&quot;文字列&quot;&gt;文字列&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2324</link>
    <pubDate>Tue, 02 Jul 2013 11:02:48 +0900</pubDate>
  </item>
  <item>
    <title>[C言語]UTF-8でエンコードされた文字列の文字数を取得するコード</title>
    <description>&lt;p&gt;C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。&lt;/p&gt;&lt;p&gt;Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字（漢字、ひらがな、カタカナなど） も1文字としてカウントする関数を作成することにします。 &lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;strlen_utf8(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*cp);&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;_bytesize(&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code);&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testAscii&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;ABCDEFG&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testHira&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;あいうえお&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testKata&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;アイウエ&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testKanji&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;愛々木&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*testAll&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen(testAscii)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen(testAscii));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen_utf8(testAscii)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen_utf8(testAscii));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen(testHira)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen(testHira));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen_utf8(testHira)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen_utf8(testHira));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen(testKata)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen(testKata));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen_utf8(testKata)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen_utf8(testKata));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen(testKanji)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen(testKanji));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen_utf8(testKanji)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen_utf8(testKanji));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen(testAll)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen(testAll));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;strlen_utf8(testAll)&amp;nbsp;=&amp;nbsp;%d\n&amp;quot;&lt;/span&gt;,&amp;nbsp;strlen_utf8(testAll));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;UTF-8でエンコードされた文字列の文字数を取得&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;strlen_utf8(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*cp)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;textlen&amp;nbsp;=&amp;nbsp;strlen(cp);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;pos&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;count&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;while&lt;/span&gt;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;textlen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code&amp;nbsp;=&amp;nbsp;*(cp&amp;nbsp;+&amp;nbsp;pos);&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;ASCIIコード値を取得&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bytelen&amp;nbsp;=&amp;nbsp;_bytesize(code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos&amp;nbsp;+=&amp;nbsp;bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count++;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字数をカウント&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;count;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字のバイト長を求める&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;_bytesize(&lt;span class=&quot;src_typekeyword&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;code)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;i;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;code)&amp;nbsp;{&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;1バイト文字以外&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;2&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;8&lt;/span&gt;;&amp;nbsp;i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;code))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;break&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。&lt;/p&gt;&lt;p&gt;また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。 &lt;/p&gt;&lt;p&gt;プロクラムの実行結果は以下のようになります。&lt;br&gt;&lt;br&gt;kagahiro@kagahiro-PC ~/sample/c&lt;br&gt;$ ./strlen_utf8&lt;br&gt;strlen(testAscii) = 7&lt;br&gt;strlen_utf8(testAscii) = 7&lt;br&gt;strlen(testHira) = 15&lt;br&gt;strlen_utf8(testHira) = 5&lt;br&gt;strlen(testKata) = 12&lt;br&gt;strlen_utf8(testKata) = 4&lt;br&gt;strlen(testKanji) = 9&lt;br&gt;strlen_utf8(testKanji) = 3&lt;br&gt;strlen(testAll) = 52&lt;br&gt;strlen_utf8(testAll) = 22&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2323#link&quot; target=&quot;_blank&quot;&gt;Link(3)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2323#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2323#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=C%E8%A8%80%E8%AA%9E&quot; title=&quot;C言語&quot;&gt;C言語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=UTF8&quot; title=&quot;UTF8&quot;&gt;UTF8&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E5%88%97&quot; title=&quot;文字列&quot;&gt;文字列&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E6%95%B0&quot; title=&quot;文字数&quot;&gt;文字数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2323</link>
    <pubDate>Mon, 01 Jul 2013 20:46:54 +0900</pubDate>
  </item>
  <item>
    <title>PHPからXMLを出力するサンプルコード</title>
    <description>&lt;p&gt;PHPでXMLを扱う場合、SimpleXMLやDOMを使うというのが一般的なようですが、今回はそれらは使わずに単に出力したいXML形式の文字列を生成してそれ出力するというサンプルコードです。&lt;/p&gt;&lt;p&gt;サンプルコードの処理内容は、MySQLのテーブルからスレッドIDを取得してURLを生成し、Googleのウェブマスターツールに登録するためにSitemapプロトコルに対応したXMLを出力するというものです。&lt;/p&gt;&lt;p&gt;&amp;lt;?php&lt;br&gt;//------------------------------------------------------------------------------&lt;br&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sitemap.php&lt;br&gt;//------------------------------------------------------------------------------&lt;br&gt;&lt;br&gt;mb_language(&amp;quot;Japanese&amp;quot;);&lt;br&gt;mb_internal_encoding(&amp;quot;UTF-8&amp;quot;);&lt;br&gt;&lt;br&gt;require_once('./config.php');&lt;br&gt;require_once('./util.php');&lt;br&gt;&lt;br&gt;$siteurl&amp;nbsp;=&amp;nbsp;SITE_URL;&lt;br&gt;$itemlist&amp;nbsp;=&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;EOL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;loc&amp;gt;$siteurl&amp;lt;/loc&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;changefreq&amp;gt;daily&amp;lt;/changefreq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;priority&amp;gt;0.8&amp;lt;/priority&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/url&amp;gt;&lt;br&gt;EOL;&lt;br&gt;&lt;br&gt;//&amp;nbsp;DB接続&lt;br&gt;$dbh&amp;nbsp;=_db_connect();&lt;br&gt;&lt;br&gt;$sql&amp;nbsp;=&amp;nbsp;&amp;quot;SELECT&amp;nbsp;threadid&amp;nbsp;FROM&amp;nbsp;thread&amp;nbsp;WHERE&amp;nbsp;status&amp;nbsp;=&amp;nbsp;1&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;threadid&amp;quot;;&lt;br&gt;&lt;br&gt;$result&amp;nbsp;=&amp;nbsp;mysql_query($sql,&amp;nbsp;$dbh);&lt;br&gt;if&amp;nbsp;(!$result)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_error(&amp;quot;SQL&amp;nbsp;Error:&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;mysql_error()&amp;nbsp;.&amp;nbsp;&amp;quot;\n&amp;quot;);&lt;br&gt;}&lt;br&gt;&lt;br&gt;while&amp;nbsp;($row&amp;nbsp;=&amp;nbsp;mysql_fetch_assoc($result))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$itemurl&amp;nbsp;=&amp;nbsp;SITE_URL&amp;nbsp;.&amp;nbsp;'?thread='&amp;nbsp;.&amp;nbsp;$row['threadid'];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$itemlist&amp;nbsp;.=&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;EOL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;loc&amp;gt;$itemurl&amp;lt;/loc&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;changefreq&amp;gt;daily&amp;lt;/changefreq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;priority&amp;gt;0.7&amp;lt;/priority&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/url&amp;gt;&lt;br&gt;EOL;&lt;br&gt;&lt;br&gt;}&lt;br&gt;mysql_free_result($result);&lt;br&gt;&lt;br&gt;$sitemap&amp;nbsp;=&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;EOL&lt;br&gt;&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;urlset&amp;nbsp;xmlns=&amp;quot;http://www.sitemaps.org/schemas/sitemap/0.9&amp;quot;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$itemlist&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/urlset&amp;gt;&lt;br&gt;EOL;&lt;br&gt;&lt;br&gt;mysql_close($dbh);&lt;br&gt;&lt;br&gt;header(&amp;quot;Content-Type:&amp;nbsp;text/xml;&amp;nbsp;charset=utf-8&amp;quot;);&lt;br&gt;echo&amp;nbsp;$sitemap;&lt;br&gt;&lt;br&gt;exit();&lt;br&gt;&lt;br&gt;?&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;上記のようなベタなやり方でなく、SimpleXMLやDOMを使いたいという場合は、以下のページが参考になると思います。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/jp/xml/library/x-xmlphp1.html&quot; target=&quot;_blank&quot;&gt;PHP 開発者のための XML: 第 1 回 PHP での XML を 15 分で学ぶ&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774149721/aaaaaaee-22/ref=nosim&quot;&gt;プロになるための PHPプログラミング入門&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：星野 香保子  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774149721/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51uySfZnV7L.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774149721/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2286#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2286#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2286#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=PHP&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=XML&quot; title=&quot;XML&quot;&gt;XML&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2286</link>
    <pubDate>Thu, 21 Feb 2013 20:19:18 +0900</pubDate>
  </item>
  <item>
    <title>[C言語]1バイト(8bit)の10進数を2進数の文字列に変換するコード</title>
    <description>&lt;p&gt;1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。&lt;/p&gt;&lt;p&gt;C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_preprocessor&quot;&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;&amp;nbsp;dec2bin(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest);&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;buf_size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;9&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;buf[buf_size];&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;変換後の2進文字列を受け取るための領域&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;str1[]&amp;nbsp;=&amp;nbsp;&amp;quot;abcdefg&amp;quot;;&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;str1[]&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;あいうえお&amp;quot;&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*cp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;num&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(cp&amp;nbsp;=&amp;nbsp;str1;&amp;nbsp;*cp;&amp;nbsp;cp++)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;文字数分処理&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf,&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'\0'&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;sizeof&lt;/span&gt;(buf));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dec2bin(*cp,&amp;nbsp;buf);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;span class=&quot;src_doublequotation&quot;&gt;&amp;quot;%d:%s&amp;nbsp;(0x%02.2X)\n&amp;quot;&lt;/span&gt;,&amp;nbsp;num,&amp;nbsp;buf,&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0x000000f&lt;/span&gt;f&amp;nbsp;&amp;amp;&amp;nbsp;*cp);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span class=&quot;src_multilinecomment&quot;&gt;/*&amp;nbsp;1Byte(8bit)の10進数を2進数の文字列に変換&amp;nbsp;*/&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;src_keyword&quot;&gt;void&lt;/span&gt;&amp;nbsp;dec2bin(&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;src,&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;char&lt;/span&gt;&amp;nbsp;*dest)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;const&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;bit_size&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;8&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_typekeyword&quot;&gt;int&lt;/span&gt;&amp;nbsp;i;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;src_keyword&quot;&gt;for&lt;/span&gt;&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;bit_size;&amp;nbsp;i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest[i]&amp;nbsp;=&amp;nbsp;(&lt;span class=&quot;src_digit&quot;&gt;0x80&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;src)&amp;nbsp;?&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'1'&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;src_singlequotation&quot;&gt;'0'&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;&lt;span class=&quot;src_digit&quot;&gt;1&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot;&gt;解きながら学ぶC言語&lt;/a&gt;&lt;br /&gt;&lt;small&gt;ソフトバンククリエイティブ  著者：柴田 望洋,肘井 真一,高木 宏典,赤尾 浩  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/516WRDSAFQL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797327901/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#link&quot; target=&quot;_blank&quot;&gt;Link(6)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2253#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=C%E8%A8%80%E8%AA%9E&quot; title=&quot;C言語&quot;&gt;C言語&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=2%E9%80%B2%E6%95%B0&quot; title=&quot;2進数&quot;&gt;2進数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&quot; title=&quot;プログラミング&quot;&gt;プログラミング&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2253</link>
    <pubDate>Fri, 21 Dec 2012 17:23:17 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字列の部分文字列を取り出すコード</title>
    <description>&lt;p&gt;Perlのsubstr関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。それでは不都合なことも多いので、半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。&lt;/p&gt;&lt;p&gt;以下はそのコードです。&lt;a href=&quot;http://59log.com/detail2243.html&quot; target=&quot;_blank&quot;&gt;[Perl]UTF-8でエンコードされた文字列の文字数を取得するコード&lt;/a&gt;と同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$testStr&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;0,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;0,&amp;nbsp;5),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;3,&amp;nbsp;3)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;3,&amp;nbsp;3),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;10,&amp;nbsp;4)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;10,&amp;nbsp;4),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;13,&amp;nbsp;5)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;13,&amp;nbsp;5),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;substr_utf8($testStr,&amp;nbsp;13)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;nbsp;.&amp;nbsp;substr_utf8($testStr,&amp;nbsp;13),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;exit;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の部分文字列を取り出す&lt;br&gt;#&amp;nbsp;substr_utf8&amp;nbsp;(文字列式,&amp;nbsp;オフセット[,&amp;nbsp;長さ]）長さを指定しなかった場合は最後まで&lt;br&gt;sub&amp;nbsp;substr_utf8&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($src,&amp;nbsp;$offset,&amp;nbsp;$len)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$srclen&amp;nbsp;=&amp;nbsp;length($src);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$dest&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$srclen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(defined($len)){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;&amp;gt;=&amp;nbsp;$offset&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;$count&amp;nbsp;&amp;lt;&amp;nbsp;($offset&amp;nbsp;+&amp;nbsp;$len))&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;#&amp;nbsp;長さ指定なし&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($count&amp;nbsp;&amp;gt;=&amp;nbsp;$offset)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dest&amp;nbsp;.=&amp;nbsp;substr($src,&amp;nbsp;$pos,&amp;nbsp;$bytelen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count++;&amp;nbsp;#&amp;nbsp;文字数をカウント&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$dest;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;shift;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;substr_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、_bytesize関数を呼び出して文字のバイト数を求め、その文字がパラメータで指定された範囲の場合は、戻り値として返す文字列に連結し、そうでなかった場合は文字数のカウントアップのみ行なっています。&lt;/p&gt;&lt;p&gt;_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot;&gt;もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design ｐlus)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：木本 裕紀  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51d4T7m8NzL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774150258/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#link&quot; target=&quot;_blank&quot;&gt;Link(4)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2244#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E9%83%A8%E5%88%86%E6%96%87%E5%AD%97%E5%88%97&quot; title=&quot;部分文字列&quot;&gt;部分文字列&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2244</link>
    <pubDate>Thu, 13 Dec 2012 10:51:25 +0900</pubDate>
  </item>
  <item>
    <title>[Perl]UTF-8でエンコードされた文字列の文字数を取得するコード</title>
    <description>&lt;p&gt;Perlのlength関数ではバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。&lt;/p&gt;&lt;p&gt;ブログなどのアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字（漢字、ひらがな、カタカナなど）も1文字としてカウントする関数を作成することにします。&lt;/p&gt;&lt;p&gt;UTF-8では、&lt;br&gt;&lt;br&gt;1バイト目の先頭ビットが0の場合は1バイト文字&lt;br&gt;1バイト目の先頭から3ビットが110の場合は2バイト文字&lt;br&gt;1バイト目の先頭から4ビットが1110の場合は3バイト文字&lt;br&gt;1バイト目の先頭から5ビットが11110の場合は4バイト文字&lt;br&gt;1バイト目の先頭から6ビットが111110の場合は5バイト文字&lt;br&gt;1バイト目の先頭から7ビットが1111110の場合は2バイト文字&lt;br&gt;&lt;br&gt;という仕様ですので、1バイト目のビットの状態を調べることによって、その文字が何バイトかを調べることができます。&lt;br&gt;&lt;/p&gt;&lt;p&gt;以下のコードでは、この仕様にもとづいて全角文字を含む文字列の文字数を取得しています。&lt;/p&gt;&lt;p&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use&amp;nbsp;strict;&lt;br&gt;use&amp;nbsp;warnings;&lt;br&gt;&lt;br&gt;my&amp;nbsp;$testAscii&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFG&amp;quot;;&lt;br&gt;my&amp;nbsp;$testHira&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;quot;あいうえお&amp;quot;;&lt;br&gt;my&amp;nbsp;$testKata&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;quot;アイウエ&amp;quot;;&lt;br&gt;my&amp;nbsp;$testKanji&amp;nbsp;=&amp;nbsp;&amp;quot;愛々木&amp;quot;;&lt;br&gt;my&amp;nbsp;$testAll&amp;nbsp;=&amp;nbsp;&amp;quot;ABCDEFGあいうえおアイウエオ愛夢佐々木&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testAscii)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testAscii),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testAscii)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testAscii),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testHira)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testHira),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testHira)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testHira),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testKata)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testKata),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testKata)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testKata),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testKanji)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testKanji),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testKanji)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testKanji),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;print&amp;nbsp;&amp;quot;length($testAll)&amp;nbsp;=&amp;nbsp;&amp;quot;.length($testAll),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;print&amp;nbsp;&amp;quot;strlen_utf8($testAll)&amp;nbsp;=&amp;nbsp;&amp;quot;.strlen_utf8($testAll),&amp;nbsp;&amp;quot;\n&amp;quot;;&lt;br&gt;&lt;br&gt;exit;&lt;br&gt;&lt;br&gt;#&amp;nbsp;UTF-8でエンコードされた文字列の文字数を取得する。&lt;br&gt;sub&amp;nbsp;strlen_utf8&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($text)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$textlen&amp;nbsp;=&amp;nbsp;length($text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$pos&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$count&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;($pos&amp;nbsp;&amp;lt;&amp;nbsp;$textlen)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$code&amp;nbsp;=&amp;nbsp;ord&amp;nbsp;substr($text,&amp;nbsp;$pos,&amp;nbsp;1);&amp;nbsp;#&amp;nbsp;先頭のASCIIコード値を取得&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$bytelen&amp;nbsp;=&amp;nbsp;_bytesize($code);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$pos&amp;nbsp;+=&amp;nbsp;$bytelen;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$count++;&amp;nbsp;#&amp;nbsp;文字数をカウント&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$count;&lt;br&gt;}&lt;br&gt;&lt;br&gt;#&amp;nbsp;文字のバイト長を求める&lt;br&gt;sub&amp;nbsp;_bytesize&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;($code)&amp;nbsp;=&amp;nbsp;@_;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my&amp;nbsp;$size&amp;nbsp;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;{&amp;nbsp;#&amp;nbsp;1バイト文字以外&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;my&amp;nbsp;$i&amp;nbsp;(2&amp;nbsp;..&amp;nbsp;8)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last&amp;nbsp;if&amp;nbsp;(!(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$size++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$size;&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;p&gt;strlen_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。&lt;/p&gt;&lt;p&gt;_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot;&gt;ゼロからわかる Perl言語超入門&lt;/a&gt;&lt;br /&gt;&lt;small&gt;技術評論社  著者：高橋 順子  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41cLYQHtnZL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4774145386/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#link&quot; target=&quot;_blank&quot;&gt;Link(3)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2243#comment&quot; target=&quot;_blank&quot;&gt;Comment(1)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=Perl&quot; title=&quot;Perl&quot;&gt;Perl&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E6%96%87%E5%AD%97%E6%95%B0&quot; title=&quot;文字数&quot;&gt;文字数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2243</link>
    <pubDate>Wed, 12 Dec 2012 11:56:21 +0900</pubDate>
  </item>
  <item>
    <title>[PHP]10進数を2進文字列に変換するコード</title>
    <description>&lt;p&gt;PHPの場合は、ズバリ10進数を2進文字列に変換できるdecbin関数があるので、decbin関数を使用すればいいのですが、もちろん、&lt;a href=&quot;http://59log.com/detail2239.html&quot;&gt;Perlの場合&lt;/a&gt;と同様にビット演算で2進文字列に変換することもできます。以下は、そのサンプルコードです。&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;src_metakeyword&quot;&gt;&amp;lt;?php&lt;br&gt;&lt;br&gt;//&amp;nbsp;'A'のアスキーコード値を取得&lt;br&gt;$asciicode&amp;nbsp;=&amp;nbsp;ord('A');&lt;br&gt;&lt;br&gt;//&amp;nbsp;PHPのdecbin関数で2進文字列に変換し、sprintfで整形&lt;br&gt;$binarystr&amp;nbsp;=&amp;nbsp;sprintf(&amp;quot;%08.8s&amp;quot;,&amp;nbsp;decbin($asciicode));&lt;br&gt;print&amp;nbsp;$binarystr&amp;nbsp;.&amp;nbsp;&amp;quot;&amp;nbsp;(1)\n&amp;quot;;&amp;nbsp;//&amp;nbsp;for&amp;nbsp;debug&lt;br&gt;&lt;br&gt;//&amp;nbsp;ビット演算で2進文字列に変換&lt;br&gt;$binarystr&amp;nbsp;=&amp;nbsp;_binstr($asciicode);&lt;br&gt;print&amp;nbsp;$binarystr&amp;nbsp;.&amp;nbsp;&amp;quot;&amp;nbsp;(2)\n&amp;quot;;&amp;nbsp;//&amp;nbsp;for&amp;nbsp;debug&lt;br&gt;&lt;br&gt;function&amp;nbsp;_binstr($code)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;=&amp;nbsp;'';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;($i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;$i&amp;nbsp;&amp;lt;&amp;nbsp;8;&amp;nbsp;$i++)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$str&amp;nbsp;.=&amp;nbsp;(0x80&amp;nbsp;&amp;amp;&amp;nbsp;$code)&amp;nbsp;?&amp;nbsp;'1'&amp;nbsp;:&amp;nbsp;'0';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$code&amp;nbsp;&amp;lt;&amp;lt;=&amp;nbsp;1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$str;&amp;nbsp;&lt;br&gt;}&lt;br&gt;?&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;このスクリプトをコマンドラインで実行すると次のように表示されます。&lt;/p&gt;&lt;p&gt;C:\xampp\htdocs\sample&gt;\xampp\php\php binstr.php&lt;br&gt;01000001 (1)&lt;br&gt;01000001 (2)&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot;&gt;PHPハンドブック (ハンドブックシリーズ)&lt;/a&gt;&lt;br /&gt;&lt;small&gt;ソフトバンククリエイティブ  著者：柏岡 秀男  &lt;font color=&quot;#66ccff&quot;&gt;&lt;/font&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot;&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41K7Q87RVIL.jpg&quot; border=&quot;0&quot; &gt;&lt;/a&gt;  &lt;br clear=&quot;left&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4797363185/aaaaaaee-22/ref=nosim&quot; target=&quot;_blank&quot;&gt;amazon.co.jpのカスタマーレビューを見る&lt;/a&gt;&lt;br /&gt;powered by &lt;a href=&quot;http://59bbs.org/amalink/&quot;&gt;amalink&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#link&quot; target=&quot;_blank&quot;&gt;Link(1)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#trackback&quot; target=&quot;_blank&quot;&gt;Trackback(0)&lt;/a&gt; | &lt;a href=&quot;https://59log.com/?func=detail&amp;amp;id=2242#comment&quot; target=&quot;_blank&quot;&gt;Comment(0)&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;h3&gt;キーワード&lt;/h3&gt;&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=PHP&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=2%E9%80%B2%E6%95%B0&quot; title=&quot;2進数&quot;&gt;2進数&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E5%A4%89%E6%8F%9B&quot; title=&quot;変換&quot;&gt;変換&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB&quot; title=&quot;サンプル&quot;&gt;サンプル&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0&quot; title=&quot;プログラム&quot;&gt;プログラム&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;https://59log.com/?q=%E3%82%B3%E3%83%BC%E3%83%89&quot; title=&quot;コード&quot;&gt;コード&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://59log.com/&quot;&gt;語句ログ - ニュース、プログラミング、システムトレードの用語解説 - 日本の注目ニュース、コンピュータープログラミング（C/C++,Perl,PHP,SQL）、システムトレード（FX,CFD,株価指数,先物）に関する語句（Word）を日本語や英語で解説&lt;/a&gt;&lt;/p&gt;</description>
    <link>https://59log.com/?func=detail&amp;id=2242</link>
    <pubDate>Tue, 11 Dec 2012 19:33:29 +0900</pubDate>
  </item>

 </channel>
</rss>
