###前提・実現したいこと
C#でSNMPTrapをライブラリを使わずにパケットを直に
送信したいと考えています。
作成している最中にOidのパケット変換で躓いてしまったので質問をさせて頂きます。
1.3.6.1.4.1.311.21.20
のOidを
0x2B 0x06 0x01 0x04 0x01 0x82 0x37 0x15 0x14
の形にしてバイト配列に16進数で格納したいと考えています。
ネットで調べた所10進数→16進数の変換にbitConverterクラスを使う方法が
あることがわかり下記のソースコードのように試してみましたが上手く
変換されませんでした。
初歩的な質問で申し訳ありませんが
Oidを16進数に変換しbyte配列に保存する方法を教えていただきたいです。
###発生している問題・エラーメッセージ
16進数に変換されない
###該当のソースコード
C#
1namespace SNMPTrap 2{ 3 class Program 4 { 5 6 static void Main(string[] args) 7 { 8 string remoteHost = "127.0.0.1"; 9 int remotePort = 162; 10 UdpClient udp = new UdpClient(); 11 12 byte[] Oid = ConvertToOid("1.3.6.1.4.1.311.21.20"); 13 udp.Send(Oid, Oid.Length, remoteHost,remotePort); 14 } 15 16 public static byte[] ConvertToOid(string str) 17 { 18 string[] splitData = str.Split('.'); 19 byte[] data = new byte[splitData.Length]; 20 byte[] buf = new byte[1]; 21 for (int j = 0; j < splitData.Length; j++) 22 { 23 buf = BitConverter.GetBytes(Convert.ToInt16(splitData[j])); 24 data[j] = buf[0]; 25 } 26 return data; 27 } 28 29 } 30 31}
###試したこと
文字列を'.'で区切り
C#のbitCOnverter.GetBytes()を使い16進数のバイト変換を試みました。
###補足情報(言語/FW/ツール等のバージョンなど)
C# framework4.6 visualstudio2013
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 11:36