• ベストアンサー

取得したIPアドレスの桁数を揃えたい

mssineの回答

  • mssine
  • ベストアンサー率24% (38/156)
回答No.2

頭に0がついてるのは、本当に10進数ですか? 普通(多分??)頭に0が付いた数値はunixやネットワークの世界では8進数と見なしちゃいます。。。 以下のコードを実行してみてください。 Declare Function inet_addr Lib "ws2_32" (ByVal ipaddress As String) As SOCKADDR_IN Type SOCKADDR_IN b1 As Byte b2 As Byte b3 As Byte b4 As Byte End Type Sub xxx() Dim IP As SOCKADDR_IN IP = inet_addr("195.123.011.02") MsgBox IP.b1 & "." & IP.b2 & "." & IP.b3 & "." & IP.b4 End Sub

221EG6
質問者

お礼

ご回答ありがとうございます。 今回のIPアドレスは、他のAPIから取得したデータでテキスト型に変換されてテーブルに入れていますので、8進数ではないようです。 頭に0の付いた数値がネットワークの世界で8進数と見なされることは勉強になりました。頂いたAPIも参考になりました。

関連するQ&A

  • 【Access2010】桁数バラバラの日付を統一

    添付画像のような日付データ(ピリオド区切り)があります。 データ(csvファイル)は原則毎日インポートしているので、日付の異なるデータが混在することはほとんどありませんが、まれに多忙・有休などで数日間インポートしなかった場合は混在してしまいます。 その場合は、csvファイルをコピーして桁数ごとにインポート→桁数ごとの更新クエリーを実行し数字8桁にする→更新クエリーで日付型にしています。  <例1:「***.*.*」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & "0" & Mid$([日付],6,1) & "0" & Right([日付],1)  <例2:「***.**.**」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & Mid$([日付],6,2) & Right([日付],2)  <共通>   日付型への更新クエリー    → Left$([日付更新用],4) & "/" & Mid$([日付更新用],5,2) & "/" & Right$([日付更新用],2) 実行すべき桁数ごとの更新クエリーを間違えるとインポート作業からやり直さなければならず、非常に面倒です。 桁数が違っても同じクエリーで数字8桁にする方法はありませんか?フィールド・クエリーの追加はいくらでも可能です。

  • Access2007 Mid関数

    数値項目を指定桁数から抜き出しをしたいのですが、今までAccess95で使えていたMid関数が使えなくなってしまいました。 下記のようにしているのですが、どう記述したらよいのでしょうか。 数値項目[YMD]に入っている"20080121"を"2008.01.21"と表示させたい場合、クエリーには =Mid([YMD],3,2) & "." & Mid([YMD],5,2) & "." & Mid([YMD],7,2) と記述しています。

  • 特定のセルの桁数を変更したい

    お世話になります。 VBAのマクロを作成していまして、 行毎に処理を行う過程で 特定の数値の入力されたセルだけ桁数を8桁にしたいのですが そのような関数や方法などありませんでしょうか? 自分の探し方が悪いのでしょうか? どうぞよろしくお願い致します。

  • Excel2010VBAの数値判定、桁数

    Excel2010VBAの数値判定で、例えば「TextBox1」で、西暦の年数が入ります。 「TextBox1」の桁数が4桁をチェックしたい場合(4桁しか入力してはいけない場合)どうすればよいでしょうか?ただし、1桁目の数値は0ではいけません。 例: 0123・・・× 2014・・・○ 回答よろしくお願いします。

  • アクセスのフォームで、桁数を指定したい。

    例)「1」の場合でも、3桁の設定で「001」としたい。 エクセルで言うところの書式設定でユーザー定義で桁数を指定できるように、アクセスのフォームで指定できないでしょうか? その数値を最終的にバーコード化したいのですが、その桁数が違ってしまって、表現したいバーコードが再現できないのです。 ちなみにテーブル、クエリでは書式の設定で(表面だけかも知れませんが)表示できています。 どなたかよろしくご教授のほどよろしくお願いします。

  • エクセル関数で桁数指定し数値を比較したいが

    エクセル関数で桁数指定などあるのでしょうか? 例えば 桁数を指定し一致した数値を取り出したいが・・どうすればよいでしょうか? 桁数は1桁~6桁です。 「例」123456の数字があります。 6桁全て一致したら○ 下5桁一致したら○ 下4桁一致したら○ 下3桁一致したら○ ・・・・と言う具合にエクセルで組みたいのです。よろしくお願いします。

  • 桁数の統一と不要な文字の削除の仕方

    桁数の統一と不要な文字の削除の仕方 数字の後に「-(ハイフン)1」や「-(ハイフン)2」が入力されている数字があり、 「-」以下の数字を表示させず、尚且つ数字の桁数(6桁)を統一する方法を探しています。 <例> 最初の数字       処理後 11111-1    →   011111 11111-2    →   011111 222222     →   222222 222222-1    →   222222 当初「-1」、「-2」を置換で削除した後、ユーザー定義を「000000」にしていました。 ただ、置換処理が手間な為、関数等で簡単に処理できればと考えています。 宜しくお願い致します。

  • IPアドレス第4オクテッドの数値を得る

    以下のようなIPアドレスがあると過程します。 <例> 172.20.0.10 172.20.0.11 以前こちらのサイトでIPアドレスの第2オクテッドの数値を得る方法を ご教授いただきました。 =IF(A1="","",REPLACE(REPLACE(A1,FIND(".",A1,FIND(".",A1)+1),99,""),1,FIND(".",A1),"")+0) この方法を応用して第4オクテッドのみを取得したいと考え、REPLACE関数、FIND関数の使い方を調べたのですが上記関数をどのようにしたらうまくいくのかわかりませんでした。 よろしくお願いします。

  • Excel IPアドレスを比較してセルを入替える

    以下のようなデータ   A列     B列 192.170.1.1 192.171.1.1 192.171.1.2 192.170.1.2 IPアドレスの第2オクテッドを比較し数値の小さいほうをが左にくるように VBAでクリック釦を作成したいのですがどのように記述すればよいでしょうか? 釦をクリックすると   A列     B列 192.170.1.1 192.171.1.1 192.170.1.2 192.171.1.2 のように該当のセルがA列・B列入れかえができる。 IPアドレスを取得する関数は ユーザー関数を使用してsplitn(範囲、第○オクテッド)で 第2オクテッドの数値は取得できます。 よろしくお願いします。

  • IF関数を使って値を算出したい2

    あるアクセルテーブルの列に、1~360の数値が入っています。 ※800件くらいある これをIF関数/Format関数等を使って、クエリーを活用し以下ルールで数字を変換したいのですが、 できますでしょうか。 (2種類を検討したい) ■1つ目 1~30・・・・1 31~60・・・2 61~90・・・3 91~120・・4 121~150・・5 151~180・・6 181~210・・7 211~240・・8 241~270・・9 271~300・・10 301~330・・・11 331以上~・・・12 ■2つ目 1~30・・・・1 31~60・・・2 61~90・・・3 91~120・・4 121~150・・5 151~180・・6 181~210・・7 211~240・・8 241~270・・9 271~300・・10 301~330・・・11 331~360・・・12 361以上~・・・13 ※テーブルからクエリーで算出する際のIF関数・式等には特にこだわらないです(クエリーで算出できればOK)。 お知恵をいただけるとたすかります。