ネットが遅くてイライラしてない!?

掲題について質問です。

例えばプログラミングにおける文字列に対して
時々、「文字列はバイト列とみなすことができる。」
という記述を見かけます。

具体的にいうとRuby1.8系における文字列がそのバイト列らしいのです。

例えば、
hoge = "文字列";
print hoge.unpack("C*")
とすると
[230, 150, 135, 229, 173, 151, 229, 136, 151]
というようにUTF-8で符号化された各8bitの0~255までの値の配列が返って来ます。
これはバイト列になるのですか?

それとも
hoge = "文字列";
print hoge.unpack("H*")
["e69687 e5ad97 e58897"]
(それぞれ一文字が1byte3つ分の列となっています。)
このように16進数で表された形式がバイト列というあつかいなのでしょうか?


そしてバイナリ列とバイト列の違いはなんでしょうか?
よろしくご教授ください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

おなじでーたでもびっとたんいでつかえばばいなりれつばいとたんいでつかえばばいとれつ

    • good
    • 1

実態としては同じです。


0と1の並びを、1桁ずつ「何ビット」という単位で考えればバイナリ列。8桁ずつ「何バイト」と考えればバイト列。

Rubyでいうと、packした物がバイト列ですね。
文字列も(広義の)バイト列の一種です。
    • good
    • 1
この回答へのお礼

うーん。なるほど、用度で使わける程度のものですね・

お礼日時:2012/11/25 22:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバイナリデータとテキストデータの違いについて

宜しくお願いします。

バイナリデータを用語辞典で調べると
「テキスト形式(文字データ)以外のデータ形式全般のこと。
実行可能形式のコンピュータプログラムや、画像や音声、
動画などのデータなどがバイナリデータにあたる。」
(http://e-words.jp/w/E38390E382A4E3838AE383AA.html)
とあります。

これでは、バイナリデータとテキストデータの違いが分かりません。

テキストデータはコードの集まりで、
さらに細かくすると0と1の集まり(?)だから・・・
と考えるとバイナリデータとテキストデータの
違いが分かりません。

Q1.私は何が分かっていないのでしょうか?
Q2.バイナリデータとテキストデータの違いを教えてください。

宜しくお願い致します。

Aベストアンサー

バイナリデータは01の集まりです。
テキストデータは文字としての意味が与えられて居ます。ただテキストデータの01としての表現方法はプラットフォーム(OSやアプリケーション)によって異なります。例えば英文字コードでもメインフレームで使われるEBCDICもあり、unixやPCで使われるASCIIもあります。また日本語など英語以外の文字をあらわすのには、さらに多くの種類があります。また改行を表す文字もいろいろです。
例えば telnet で他のコンピュータにログオンして通信する時の文字コードはASCIIで、改行はCRLFと決まっているので、そうでないコンピュータはtelnetプログラムが自分のコンピュータのコード体系と相互変換します。

ftpでテキストデータを転送する時も同じくASCIIとCRLFと決まっています。ただ日本語文字の時にどのコードを使うかは規格では決まっていないので、ftpクライアントで、相手コンピュータの日本語コード種類を指定して、自分と合わなければ転送時に相互変換します。

Cプログラムでもテキストの改行は'\n'と決まっているので、そうでないWindowsの場合はCプログラムとの間でCRLFと'\n'の相互変換が、ライブラリ中で自動的に行われます。

そういった変換を全く行わないのがバイナリデータです。画像ファイルなどはjpegと形式が決まればどのコンピュータでも同じフォーマットなので変換の必要はありません。逆にテキストとみなして変換するとデータが壊れてしまいます。

バイナリデータは01の集まりです。
テキストデータは文字としての意味が与えられて居ます。ただテキストデータの01としての表現方法はプラットフォーム(OSやアプリケーション)によって異なります。例えば英文字コードでもメインフレームで使われるEBCDICもあり、unixやPCで使われるASCIIもあります。また日本語など英語以外の文字をあらわすのには、さらに多くの種類があります。また改行を表す文字もいろいろです。
例えば telnet で他のコンピュータにログオンして通信する時の文字コードはASCIIで、改行はCRL...続きを読む

Qバイナリファイルとバイナリ文字列の違い

がわかりません。

例えば
>http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html
をみるとバイナリ列は1バイトを連ねたものだというらしいです。

つまり【文】という文字列を文字コードUTF-8でバイト配列化すると
[1] => 230 [2] => 150 [3] => 135
となります。
(これはPHPでunpackかけましたが他の言語のGetBytes()などでも同じバイト値がでました。)
この【文】という文字列はバイナリ列になるわけですよね?
例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファイルに
なるのでしょうか?

バイナリファイルの定義をみると
>http://e-words.jp/w/E38390E382A4E3838AE383AAE38395E382A1E382A4E383AB.html
上記URLだと
>文字コードの範囲などを考慮せずに作成されたファイル
というのがバイナリファイルであるとあります。

つまりバイナリファイルとは
1バイト・・つまり8ビット(0~255)までの数値で表したものを連ねたもので
なおかつ、文字コードなどの解釈を一切行わなずに、バイト値のみが記述されたデータと
おもってもよいのでしょうか?

がわかりません。

例えば
>http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html
をみるとバイナリ列は1バイトを連ねたものだというらしいです。

つまり【文】という文字列を文字コードUTF-8でバイト配列化すると
[1] => 230 [2] => 150 [3] => 135
となります。
(これはPHPでunpackかけましたが他の言語のGetBytes()などでも同じバイト値がでました。)
この【文】という文字列はバイナリ列になるわけですよね?
例えばこの【文】という文字だけを保存したbun.txtというファイルはバイナリーファ...続きを読む

Aベストアンサー

> http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html
> をみるとバイナリ列は1バイトを連ねたものだというらしいです。

解説者はそんな「1バイトのデータを連ねた塊。」という15文字では説明しきれないと判断したからさらに説明を続けているわけです。「1バイトを連ねたものだというらしいです」なんてそこで勝手に解釈をやめてはダメですよ。

リンク先ではさらに次のような解説が続いています。

--------
扱うデータの型や形式などに立ち入らずに、任意のデータを単なるビットパターンの連なりとして汎用的に処理する場合に用いられるデータ型で、その内容は実際には文字や数値であったり、あるいは画像や音声、機械語のプログラムであったりする。
--------

つまり,その内容が実際には文字であったとしても,データ形式に立ち入らずに単なるビットパターンとして処理すればそれはバイナリ列だと説明しています。

> この【文】という文字列はバイナリ列になるわけですよね?
> この【文】という文字だけを保存したbun.txtというファイルは
> バイナリーファイルになるのでしょうか?

合っているけれど,間違ってもいます。

10進数表記で 230 150 135。2進数表記で 11100110 10010110 10000111 という3バイトを,単なるビットパターンの連なりとして扱うなら,それはバイナリ列であり,それが保存されたファイルは拡張子が何であろうとバイナリファイルです。

しかしそれを,UTF-8データの連なりとして扱うなら(かつ,そのビットパターンがUTF-8形式に正しく準拠していたのなら),それはUTF-8テキスト文字列であり,それが保存されたファイルは拡張子が何であろうとUTF-8テキストファイルです。
(".txt"という拡張子は,その内容がテキストファイルであることを保証するものではなく,ソフトウェアに対して「中身が何かは保証しないけれど,テキストファイルとして扱って欲しい」と指示する働きでしかないので)

質問者が「この【文】という文字列は」「この【文】という文字だけを」と口にしている時点で,すでにその内容が文字として解釈可能なバイト列だということを前提にしています。であるなら,それはテキスト文字列・テキストファイルと呼ぶべきものでしょう。
そして繰り返しますが,そのテキスト文字列・テキストファイルを,データ形式に立ち入らずに単なるビットパターンとして扱えば,それはバイナリ列・バイナリファイルとしても処理できます。

> http://e-words.jp/w/E38390E382A4E3838AE383AAE58897.html
> をみるとバイナリ列は1バイトを連ねたものだというらしいです。

解説者はそんな「1バイトのデータを連ねた塊。」という15文字では説明しきれないと判断したからさらに説明を続けているわけです。「1バイトを連ねたものだというらしいです」なんてそこで勝手に解釈をやめてはダメですよ。

リンク先ではさらに次のような解説が続いています。

--------
扱うデータの型や形式などに立ち入らずに、任意のデータを単なるビットパターンの連なりとし...続きを読む

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Q1文字って1バイトだったっけ?

タイトルの通りなんですが
私の記憶では1文字1バイトで漢字が2バイトだったような・・・。
アルファベットは?数字は?わかんないので教えてください。
それと、1バイト=8ビットですよね?
ちょっと興味があるので暇のある方がおられましたら詳しく教えてほしいです。

よろしくおねがいいたします。

Aベストアンサー

全角文字(英語・漢字・数字問わず):2バイト
半角文字:1バイト
では無いでしょうか?

>1バイト=8ビット
その通りです

http://www.pc-view.net/Help/manual/0082.html
などもありますので参考までに

参考URL:http://www.pc-view.net/Help/manual/0082.html

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qラッパーって何なんでしょう・・・?

C++を勉強し始めたのですが、何とも難しい言葉が多くて、書いてあることが本当に理解できません。
ラッパーって?
ハンドルって??
と、次から次へと理解不能な言葉が・・・
読んでいるのは、C++Builderの開発者ガイドと、プログラミング言語C++の本です。
具体的なイメージが浮かばず、概念自体もピンときません。
わかりやすい本などあったら教えてください。
また、とりあえずラッパーとハンドルがどうしても気になるので、この2つの意味教えてください!!
よろしくお願いします。

Aベストアンサー

ラッパーは、wrapper で包み込むものの意味です。
wrap ラップはサランラップのラップですね。
wrappingラッピングといえば、プレゼントを包むやつですね。

つまり、たとえばある関数を使いたいと思ったとします。
しかし、その関数を呼び出すには、いろんな手続きをしないといけない、また呼ぶときに渡す引数をたくさん設定しなければならないなど、使用するのが面倒な場合があります。
これはその関数が汎用的に使えるように、動作に自由度を持たせていると、面倒になる傾向にあります。

そんな時、引数なし、又は簡単な引数で呼び出せるような関数を作ってあげれば楽になります。
この場合は、ある程度用途が決まっているので、その関数を呼び出すときの手続きを省略してくれるような関数ですね。
それがラッパーというわけです。

あと良くあるのが、C言語で書かれたライブラリなどをC++の機能を使って使いたいときに、ラッパーを作ったりします。
この場合は逆に機能を追加して使いやすくするイメージですね。

ハンドル(handle)はつまり何かを操作するときのハンドル(車のハンドルと同じ)です。

この概念は良く使われます。
たとえば、ハードディスクにはファイルがたくさん入っています。
その中のファイルを開いて何か処理しようとします。するとディスクアクセスの処理をしなければなりませんが、それを自分で書くのは大変なので、ライブラリを使います。
ライブラリでは、
・指定されたファイルを開く関数
・指定されたファイルの中身を読み出す関数
・指定されたファイルに指定の文字を書き出す関数
などなどたくさん用意します。

ここで一つ問題が生じます。もし複数のファイルを同時に処理したい場合どうやったらよいでしょう。
いちいちファイル名で指定する方法も考えられますが、ファイルを開くときに一つのハンドルという名前の変数を用意し、その変数の中にどのファイルであるという情報、そのファイルのサイズ、そのほか必要な情報を一つにまとめておくと、ファイルを操作するときにはその変数を引数として渡すだけで、ファイルがどれであるのかという指示が簡単に出来ます。

いまファイルハンドルを例にあげましたが、他にもWindowsではたくさんのWindowを開きますので、それら一つ一つにもハンドルが用意されています。

基本的に、

・同種のものが複数ある
・上記に対して操作する関数が複数ある

という条件を満たすようなものに対しては、ハンドルという概念でコントロールすることがよくあります。

ラッパーは、wrapper で包み込むものの意味です。
wrap ラップはサランラップのラップですね。
wrappingラッピングといえば、プレゼントを包むやつですね。

つまり、たとえばある関数を使いたいと思ったとします。
しかし、その関数を呼び出すには、いろんな手続きをしないといけない、また呼ぶときに渡す引数をたくさん設定しなければならないなど、使用するのが面倒な場合があります。
これはその関数が汎用的に使えるように、動作に自由度を持たせていると、面倒になる傾向にあります。

そんな時、引...続きを読む

Q「0.0.0.0」や「127.0.0.1」の意味?

IEのブラウザを起動している最中にnetstat -naで、どのポート開いているのかを調べてみると 

TCP 192.168.0.3:2597  ×.×.×.×:80 ESTABLISHED
 
という様な表示の他に

TCP 0.0.0.0:2597    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2598    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2600    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2602    0.0.0.0:0   LISTENING
TCP 127.0.0.1:2470    0.0.0.0:0   LISTENING
UDP 127.0.0.1:2470 *:*
 

というような表示が常に出てきます。

IEを起動していないときに同じように調べると、ポートは何一つ開いていません。

自分のPCにはウィルスソフトをいれてません。

なので、やはり何かしらのウィルスに感染していると考えたほうが良いのでしょうか?

それとも、「0.0.0.0」や「127.0.0.1」といった表示はIEを起動させれば常に出てくるものなんでしょうか?

「0.0.0.0」と「127.0.0.1」はどういう意味なんでしょうか?

IEのブラウザを起動している最中にnetstat -naで、どのポート開いているのかを調べてみると 

TCP 192.168.0.3:2597  ×.×.×.×:80 ESTABLISHED
 
という様な表示の他に

TCP 0.0.0.0:2597    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2598    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2600    0.0.0.0:0   LISTENING
TCP 0.0.0.0:2602    0.0.0.0:0   LISTENING
TCP 127.0.0.1:2470    0.0.0.0:0   LISTENING
UDP 127.0.0.1:2470 *:*
 

というよ...続きを読む

Aベストアンサー

127.0.0.1は前の方が書いているとおりループバックアドレスといってマシン自体を表すアドレスです。

次に0.0.0.0ですが、LISTENING状態のものにしか出ていないと思いますがLocal AddressとForeign Addressで少し意味が違います。
Local Addressの0.0.0.0はマシンが持っているすべてのIPアドレスを表しています。つまりマシンが複数のIPを持っていた場合、マシンの持つすべてのIPアドレスにおいて接続を受け付けているということになります。
それとは違いLocal Addressが指定されている場合は、接続先アドレスがそのアドレスの接続しか受け付けないようになっています。

Foreign Addressが0.0.0.0の場合、これはどんなIPアドレスからでも接続を受け付けているという意味になります。

>IEを起動していないときに同じように調べると、ポートは何一つ開いていません。
これはたぶん見間違いです。普通にWindowsが起動しているなら必ず何かしらのポートが開いているはずです。

>それとも、「0.0.0.0」や「127.0.0.1」といった表示はIEを起動させれば常に出てくるものなんでしょうか?
IEが起動していなくてもWindowsが普通に起動していれば必ず出てきます。

>なので、やはり何かしらのウィルスに感染していると考えたほうが良いのでしょうか?
場合によってはウィルスに感染し、他のPCに接続しようとしている場合もあります。
多少高いと思うかもしれませんが、アンチウィルスソフトは入れた方がいいと思います。ウィルスによってはPCを起動不能にする場合もあります。大事なデータなどがある場合は、なおさら入れた方がよいでしょう。

127.0.0.1は前の方が書いているとおりループバックアドレスといってマシン自体を表すアドレスです。

次に0.0.0.0ですが、LISTENING状態のものにしか出ていないと思いますがLocal AddressとForeign Addressで少し意味が違います。
Local Addressの0.0.0.0はマシンが持っているすべてのIPアドレスを表しています。つまりマシンが複数のIPを持っていた場合、マシンの持つすべてのIPアドレスにおいて接続を受け付けているということになります。
それとは違いLocal Addressが指定されている場合は、接続先アドレ...続きを読む

QCSVファイルの中で、「 , 」カンマを使いたい

「 , 」で区切られたCSVファイルの中で、「 , 」カンマを使いたいのですが、可能でしょうか?

具体的には「これは1,500円でした。」というように、CSVファイルに収められた文章内で出てくる半角の数字(お金)の区切りに使いたいのです。
全角では代用したくないのですが、CSVファイルでデータを受け渡しする際に、困っています。

例えば、特殊文字などで対応可能でしょうか?

Aベストアンサー

受け渡しに使うと言うことは相手方のアプリケーションのことも考えなければいけないのですが・・・とりあえず対応が簡単そうな方法を。

1.各セルを""で囲む。(もちろんデータにダブルクォートがある場合はカンマと同様に困ります。
2.カンマで区切らずにタブで区切る。(比較的使われない文字ですが、やはりデータ中にタブがあるとカンマと同様です)

難しいけれど完璧に対応するためには、データ中の区切り文字は特殊な文字列に変更し、受け取り側のアプリケーションではその特殊な文字列をデータ中の区切り文字として扱うという方法が使われます。
例えば、データ中のカンマは\,にするとか。

データ作成側、受け取り側でそれぞれどこまで対応できるのか分かるともっと簡単かつ具体的な方法を回答できるかも知れません。

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QDWORDの実際の型は何でしょうか

VC++.NETの環境です。
DOWRD dw1 = 1;
int i = 2; と定義し
ここで
if ( i > dw1 ){
何かの処理;
}
とコーディングすると
warning C4018: '>' : signed と unsigned の数値を比較しようとしました。
のワーニングがでます。
これは、DWORDがint型でなくunsigned int型のようにも見えます。
ある本によれば(VC++.V.NET逆引き大全500の極意)
DWORD はint型であると記述されています。
もし、int型ならこのワーニングはでないはずなのですが、
なぜでるのでしょうか。又、DWORDの実際の型は何なのでしょうか。ご存じのかたおりましたら、教えていただけませんでしょうか。

Aベストアンサー

型定義が知りたいのならば、宣言ファイルを見れば疑問を挟む余地もありません。
DWORD型はwindef.hで
"typedef unsigned long DWORD;"
と宣言されています。

Visual Studioを使っているのならば、知りたい型の上にマウスポインタを置いて右クリック、ポップアップメニューの「定義へ移動」または「宣言へ移動」で簡単に知ることが出来ます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング