[Java]Byte型からInt型への変換を本気で考える

5月 09 2011

whyJavaでByte型変数をInt型にキャストする際には、気を付けなければならないことがあります。

前回のエントリーで、Byte型配列を16進数文字列に変換するメソッドを作りましたが、その時にByte型をInt型へ変換するには、ただ単にキャスト変換するのではなく、「0xFF」でANDビット演算しなければ値がおかしくなるという事を書きました。


どういう事かというと…

byte a = (byte)0xC8 //10進数では200のはず
int b = (int)a;
Sytem.out.println(b);

この実行結果は、「200」ではなく、「-56」が表示されます。

それを、

byte a = (byte)0xC8 //10進数では200のはず
int b = a & 0xff;
Sytem.out.println(b);

とすると、実行結果は「200」になってくれます。

しかし、なぜそのままInt型にキャスト変換するだけじゃダメなのか? なぜ0xFFでAND演算をしたら、期待した数値になるのか?そのあたりが僕の中でもやもやしてました。

「なんだかよく分からないけど、Byte型で作った16進数をInt型に変換する時には、0xFFでAND演算するオマジナイをしなきゃならない」

初級プログラマな僕は、そんな感じで全然理解出来てなかったんですよね。 でも、このオマジナイが僕にとってはブラックボックスで気持ち悪い; 自分が理解出来てないものを、プログラムの中で扱うのなんて落ち着かないったらありゃしません。

そこで、なぜByte型をInt型へそのままキャストしてはいけないのか。なぜ0xFFでAND演算をするとうまく変換されるのか。 そのオマジナイの中身を調べてみることにしました。

 

Continue Reading »

No responses yet

[Java]MD5、DESで暗号化する

5月 08 2011

Yellow computer folder with key. Isolated 3d imageJavaで文字列の暗号化をする処理が必要になったので、ライブラリクラスを作ってみました。

とりあえず、非可逆的な暗号化方式としてMD5を。可逆的な暗号化方式としてDESを選択。(※可逆的な暗号化というのは、暗号化された文字列を元の文字列に復号化できる方式。非可逆的な暗号化というのは、もう元には復号化できない方式です。)

引数として渡された文字列を、MD5やDESで暗号化してバイナリ配列を作り、それを16進数表記の文字列として返す。というメソッドを実装しました。

  

Javaには標準で暗号化のための便利なAPIが用意されているんですね。作るのも簡単です。
 

Continue Reading »

No responses yet

WireSharkの裏技 〜 コマンドラインで実行できる「TShark」 〜

4月 16 2011

WireSharkオープンソースのパケットキャプチャソフト「WireShark」。。。ネットワーク関係のお仕事をされている方は使った事のある方も多いかと思います。
※「Ethereal」が開発終了し、WireSharkへと引き継がれていったものです。

WireSharkを使うと、ネットワークを流れるパケットをキャプチャリングすることが出来るわけですが、基本的にはGUIプログラム。お手軽にGUI操作でキャプチャが出来るのも良いんですが、TcpDumpのようにコマンドラインで実行したいという時もありますよね。

※バッチファイル化したり、シェルでごにょごにょしたい時とか。あとは、GUIだと膨大なパケットを表示させる場合に、かなりのメモリを消費しますので、プログラムごと落ちてしまうこともありますし。

「あ〜、WireShark。。。コマンドラインで実行出来たら便利なのに。。。」と思っている方に朗報。実はコマンドライン版のWireSharkが存在するのです。

それが「TShark」

今回は、そのTSharkの使い方をご紹介します。

 

Continue Reading »

No responses yet

MacにEclipse 3.6 Helios をインストール

4月 05 2011

最近MacBookProをメインの開発環境にしようかと思い、Eclipseを入れました。

Windowsだと日本語化されたPleiades All in One Eclipseがあるので楽で良いですよね。WindowsPCを開発環境に使っていた時には、大して使いもしないくせに、全言語対応のUltimateパッケージをインストールしてました。

MacではPleiadesは使えないので、本家EclipseのJavaEEパッケージをインストールすることにしました。Java以外の言語は、後から追加でインストールします。

 

とりあえず日本語化をしたかったので、以下のブログさんを参考にやってみたら、あっという間に日本語化完了。最新版のVer.3.6 Heliosでの記事だったのでありがたいです。

 

この記事を読みながら作業をしたのですが、最初、PleiadesのEclipseの「eclipse.ini」ファイルを書き換えた後、本家のEclipseの「eclipse.ini」ファイルに上書きをしてしまいました。

そしたらエラーが出てうまく起動しないなと思っていたんですが、ちゃんと読んでみると本家Eclipseの「eclipse.ini」ファイルに1行追記する形で書き込めば良かったんですね。ミスしてました。

ちゃんと書き換えたら、無事日本語化されてEclipseが起動してくれました。

あとは色々とプラグインをインストールして、自分好みに仕上げて行きます。とりあえず、Viのキーバインドをするプラグインと、Git関連のプラグインでも入れてみようかな。

 

No responses yet

DTI ServersMan@VPS 最初にやったこと

3月 29 2011

自分でサーバを構築して運用してみようと思い、DTI ServersManのVPSを契約しました。

これまではXreaのレンタルサーバを利用していたんですが、Javaを使ったWebアプリケーションサーバとして利用したかった事もあり、もっと自由に使えるように自分でサーバを構築してみようかと。

ServersMan@VPSを契約して、いろいろと初期設定を行ってみたので、その時の作業記録を残します。

正直、サーバーの構築・運用は初めてなので、Webや書籍で調べながらの試行錯誤; 間違っている所や、この設定入れるべきだよ!ってのがありましたら、コメントもらえると嬉しいです。

Continue Reading »

6 responses so far

VimがTwitterクライアントになる!TwitVimの紹介

9月 20 2009

テキストエディタには、それほどこだわりはなくて、色々なもの使っていたのですが、最近Vimを使い始めました。

クセが強いので、慣れるまで時間がかかりそうです。でも、コマンドやスクリプトの使い方を覚えていくのは楽しいですね!Vimの便利さと軽快さに、だんだんと魅入られて行きそうです。

Twitterも最近始めてみたのですが、Webブラウザで利用するのが少し不便に感じます。Twitterクライアント・ソフトを利用しようかとも思ったんですが、いくつもソフトがあってどれにしようか迷ってしまう。

そんな時、ふと・・・「VimってTwitterクライアントには出来ないの?」と思い、検索してみたら、やっぱりそんなプラグインがありました。それが、「TwitVim」というプラグイン。このTwitVimを、Windows版の「vim」で使用するための方法を、ご紹介したいと思います。
Continue Reading »

One response so far

Webで読める気になる本

3月 25 2009

技術書の中には、書籍として販売もされているけれども、Web上で無料で公開されている本がたまにあります。本って、そんなに安いものでも無いし、無料で読めるのは本当にありがたいです。読んでみて気に入ったら、改めて書籍を購入しても良いですしね。
やっぱりディスプレイで見るよりも、本で読んだ方が目は疲れないですし。購入する前に一通り読めるというのもメリットですね。

そんなWeb上で読むことができる本の中で、気になっている本をメモしておこうかと思います。ちなみに、僕自身まだ読み始めたばかりというものばかりですが;

 

Continue Reading »

No responses yet

復習しなかったら勉強してもゼロなのだ

3月 20 2009

1週間くらい前に、「ひげぽん」さんのブログを見ていました。自作でOSとか作っちゃってるスゴイ方のブログなんですけど、そのブログで『勉強方法を勉強して分かった僕に足りなかった3つのこと』というエントリーを読んでいて、非常に感銘を受けたというか、ショックを受けたのが、「復習しなかったら勉強してもゼロなのだ」という言葉。

なんだか、一見して当たり前のことなんだけど、忘れていたことを、ズバリ指摘されたような感覚を覚えました。

今までプログラミングとかCGの事とか、資格試験とかを勉強してみたり、自己啓発本を読んだりとかしてきた中で、ちゃんと覚えて身に付いていることって少ない気がします。インプットの量に対して、最終的に自分の中でちゃんと残ってるのは、せいぜい10%くらい(・_・;)
でも「まあ、こんなもんだろう」ってどこか勝手に納得しちゃってた気がする。

でも、「ひげぽん」さんのブログを読んで、そこで紹介されていた「高校生の勉強法」という本を読んでみて、いかに今までの勉強の仕方が間違っていたか。。。というより、いかに「勉強の仕方」に無頓着だったかを痛感しました。

Continue Reading »

No responses yet

lsのソースを読んでないのはプログラマとしてかなりまずいのではないでしょうか

3月 07 2009

ある程度プログラムが書けるようになったらば、次にするべきことは、他人の書いたプログラムを読むことである。・・・と、どっかで聞いた気がする。どこで聞いたのか見たのか覚えてないんですが、これって一理あると思うんですよね。

もっと突っ込んで言えば、他人の書いた良質なプログラムを読むことは、プログラムを書くことと同じぐらい。。。いや、それ以上に重要なプラクティスなのかも知れない。

Continue Reading »

No responses yet