ivoryworks #9444(2009/08/05 03:00 GMT) [ 秀丸マクロ ] Rating0/0=0.00
・Mask2Bit: ネットマスク(文字型)を渡すとビット値(数値型)を返却します。 ・Bit2Mask: ビット値(数値型)を渡すとネットマスク(文字型)を返却します。 /* ネットマスクをビット値に変換 */ call Mask2Bit input("input netmask."); message str(##return); /* 逆変換 */ call Bit2Mask val(input("input value.")); message $$return; * パラメータの妥当性はチェックしてません。 * Bin2DecとDec2Binは2進数⇔10進数のサブルーチンです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
Mask2Bit: ##c=0; ##bit=0; while (strlen($$1)) { $b = leftstr($$1,1); $$1 = rightstr($$1, strlen($$1)-1); if ($b == ".") { ##c = ##c + 1; } else if (val($b) == 0 && $b != "0") { break; } else { $$aar[##c] = $$aar[##c] + $b; } } while (0 <= ##c) { call Dec2Bin val($$aar[##c]); while (strlen($$return)) { ##bit = ##bit + val(leftstr($$return,1)); $$return = rightstr($$return, strlen($$return)-1); } ##c = ##c - 1; } return ##bit; Bit2Mask: $$b_str = ""; $$mask = ""; while (strlen($$b_str) < 32) { if (0<##1) { $$b_str = $$b_str + "1"; } else { $$b_str = $$b_str + "0"; } ##1 = ##1 - 1; } while (strlen($$b_str)) { call Bin2Dec leftstr($$b_str, 8); $$mask = $$mask + str(##return); $$b_str = rightstr($$b_str, strlen($$b_str)-8); if (strlen($$b_str)) { $$mask = $$mask + "."; } } return $$mask; Bin2Dec: ##dec = 0; ##val = 1; while (strlen($$1)) { if (rightstr($$1, 1) == "1") { ##dec = ##dec + ##val; } ##val = ##val*2; $$1 = leftstr($$1, strlen($$1)-1); } return ##dec; Dec2Bin: $$str = ""; if (##1!=0) { while (##1!=1) { $$str = str(##1%2)+$$str; ##1 = ##1/2; } $$str = "1"+$$str; } else { $$str = "0"; } return $$str;
Rating0/0=0.00-0+
[ reply ]
ivoryworks
#9444()
[
秀丸マクロ
]
Rating0/0=0.00
・Mask2Bit: ネットマスク(文字型)を渡すとビット値(数値型)を返却します。 ・Bit2Mask: ビット値(数値型)を渡すとネットマスク(文字型)を返却します。 /* ネットマスクをビット値に変換 */ call Mask2Bit input("input netmask."); message str(##return); /* 逆変換 */ call Bit2Mask val(input("input value.")); message $$return; * パラメータの妥当性はチェックしてません。 * Bin2DecとDec2Binは2進数⇔10進数のサブルーチンです。Mask2Bit: ##c=0; ##bit=0; while (strlen($$1)) { $b = leftstr($$1,1); $$1 = rightstr($$1, strlen($$1)-1); if ($b == ".") { ##c = ##c + 1; } else if (val($b) == 0 && $b != "0") { break; } else { $$aar[##c] = $$aar[##c] + $b; } } while (0 <= ##c) { call Dec2Bin val($$aar[##c]); while (strlen($$return)) { ##bit = ##bit + val(leftstr($$return,1)); $$return = rightstr($$return, strlen($$return)-1); } ##c = ##c - 1; } return ##bit; Bit2Mask: $$b_str = ""; $$mask = ""; while (strlen($$b_str) < 32) { if (0<##1) { $$b_str = $$b_str + "1"; } else { $$b_str = $$b_str + "0"; } ##1 = ##1 - 1; } while (strlen($$b_str)) { call Bin2Dec leftstr($$b_str, 8); $$mask = $$mask + str(##return); $$b_str = rightstr($$b_str, strlen($$b_str)-8); if (strlen($$b_str)) { $$mask = $$mask + "."; } } return $$mask; Bin2Dec: ##dec = 0; ##val = 1; while (strlen($$1)) { if (rightstr($$1, 1) == "1") { ##dec = ##dec + ##val; } ##val = ##val*2; $$1 = leftstr($$1, strlen($$1)-1); } return ##dec; Dec2Bin: $$str = ""; if (##1!=0) { while (##1!=1) { $$str = str(##1%2)+$$str; ##1 = ##1/2; } $$str = "1"+$$str; } else { $$str = "0"; } return $$str;Rating0/0=0.00-0+
[ reply ]