C言語

FFMpegでID3タグが文字化けるのを直すパッチを作った

forked-daapdで文字化けしてるから、それを直したい。 とりあえず文字化けの原因は潰したから今度試す。 パッチの前にちょっと解説。 なぜ文字化けるのか ID3v2が対応している文字コードは、 ID3v2.2〜ID3v2.3の場合、ISO-8859-1とUTF-16だけ。 ID3v2.4の場…

C言語でCRC32を計算してみた

バイナリデータから、4バイトのハッシュを生成する。 MD5やSHA1に比べてアルゴリズムが単純で速い。 データベースに文字列を入れる時に、その文字列のCRC32ハッシュをindexにすると検索が速い! って記事を見ていつかやってみようと思ってるけど、まだ実践投…

C言語で可変長配列を作った

JavaのArrayListを参考にしつつ、2種類作った。 mallocしたメモリの先頭アドレスの配列を保持するパターン voidポインタの配列。 配列の個数+1回mallocする。 charとか小さいものだと無駄がありそう。(特に64bitOSの場合) 配列の数が足らなくなったら、voi…

マルチバイト文字列を1文字ずつに分割する

調べ方が悪いのかそんな事やろうとする人がいないのか知らないけど、見つからなかったから自分で作った。 文字コードはUTF-8限定。 mallocとreallocを使ってメモリを動的に確保した。 「文字列の配列」を作るのかと思ってたけど、動的に生成するなら「(文字…

libjingleを使える環境を整えてみた

VC++2005で。 多分これでイケる。 C言語に関しても解らないけど、VisualStudioの使い方も解らない。 libjingleの使い方については、おいおい調べる。 P2PでNAT越えしたいんだよおおお。 Google先生に感謝。 朝だ…、もう1日位休みが欲しい気分。 Windows Plat…

MIDIメッセージをネットワーク上でやり取りしてみた GUI編

ついにGUIつけた。 純粋なC言語じゃGUIをつけられない事に気づいてC++で書き直し。 で、コンソールアプリケーションからフォームアプリケーションに。 とりあえず、1台のPC上で2つ実行して、送信用と受信用で、やり取り出来た。 LAN内でならイケるはず…! 原…

MIDIメッセージをネットワーク上でやり取りしてみた

TCPのソケット通信。 一人で送信と受信の両方をやってる。 相手固定のP2Pのような。 とりあえず、LAN内で自由につなぎあえるものを作りたい。 そろそろGUIつけてみたい。 プログラム起動 MIDI INデバイスを開く。 コールバック関数設定。 ↓ MIDI OUTデバイス…

MIDIメッセージをTHRUしてみた

INPUTデバイスとOUTPUTデバイスを開いて、INPUTデバイスから入力があったらそのままOUTPUTデバイスに流す。 EDIROL PC-50の場合、NOTE OFF は使わずにベロシティ0のNOTE ONを使うらしい。 PC-50とTHRUプログラム間はランニングステータスを使って1バイト削減…

MIDIデバイス一覧を出力してちょっと音を出してみる

何が間違ってるのか解らないけど、単純にout.szPnameをprintfしようとしても最初の1文字しか出なかった。 とりあえず、音出た。 今までMIDIデバイスを扱える言語を使った事なかったから、これはすごい。 #pragma comment(lib, "winmm.lib") #include <stdio.h> #inclu</stdio.h>…

C言語でHTTPリクエストしてみた Windows編

Microsoft Visual C++ 2005の「Win32コンソールアプリケーション」でやってみた。 winsock2.h辺りでよく解らんエラーが。 1>------ ビルド開始: プロジェクト: http_request, 構成: Debug Win32 ------ 1>リンクしています... 1>http_request.obj : error LN…

C言語でHTTPリクエストしてみた

動くけど、C言語の流儀は無視した作りになってしまった…。 parseURLではsubstringっぽい処理が多い。 C言語では区切りたい所に\0を突っ込んで終わりを示すのが普通らしい。 関数がポインタを返すのもよくないのかも知れない。 ソースは大体ここから。 C 言語…