1
 WifiManager wm = (WifiManager)ctx.getSystemService(Context.WIFI_SERVICE);
 String macAddress = wm.getConnectionInfo().getMacAddress();

これは 16 進形式の文字列です。次に例を示します。

"00:23:76:B7:2B:4D"

この文字列をバイト配列に変換して、MessageDigestsha1 を使用できるようにしたい

モジュールを使用する\x代わりにexcapingを使用して、Pythonで機能させました。:hashlib

しかし、私はアンドロイド/Javaでそれを行いますか? ありがとう!

4

4 に答える 4

3

このコード:

Byte.parseByte(mac[i], 16);

文字で始まる 16 進数を正しく解析しない: "AE"、"EF" など...
修正されたコード:

WifiManager wm = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
if (wm != null) {
    String[] mac = wm.getConnectionInfo().getMacAddress().split(":");
    byte[] macAddress = new byte[6];        // mac.length == 6 bytes
    for(int i = 0; i < mac.length; i++) {
        macAddress[i] = Integer.decode("0x" + mac[i]).byteValue();
    }
}
于 2012-07-30T10:07:15.563 に答える
0
WifiManager wm = (WifiManager)ctx.getSystemService(Context.WIFI_SERVICE);
byte[] macAddress = wm.getConnectionInfo().getMacAddress().getBytes();

修正されたソリューション:

WifiManager wm = (WifiManager)ctx.getSystemService(Context.WIFI_SERVICE);
String[] mac = wm.getConnectionInfo().getMacAddress().split(":");
byte[] macAddress = new byte[6];
for(int i = 0; i < mac.length; i++) {            
    macAddress[i] = Byte.parseByte(mac[i], 16);
}
于 2012-04-14T01:36:22.907 に答える