我正在阅读proc/net/tcp
中的filereader
文件并解析regex
中的数据以获得所需内容。
来自proc/net/tcp
的示例字符串是:
0: 0401A8C0:D366 FFB79E23:01BB 01 00000000:00000000 00:00000000 00000000 11269 0 14392479 1 00000000 30 4 30 10 -1
所以local address
:port
是:0401A8C0:D366
,我尝试通过该方法将十六进制转换为字符串,但它不返回有效数据....有人可以帮助读数据?
应该提供类似的内容:192.168.*.*
。
解析ip地址应该从这个0401A8C0
Little Endian字符串获取bytearray,但无法解决
The Hex to String method :
public String fromHex(String hex) throws UnsupportedEncodingException {
hex = hex.replaceAll("^(00)+", "");
byte[] bytes = new byte[hex.length() / 2];
for (int i = 0; i < hex.length(); i += 2) {
bytes[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4) + Character.digit(hex.charAt(i + 1), 16));
}
return new String(bytes);
}
答案 0 :(得分:0)
我通过将字符串:0401A8C0
转换为字节数组来解决它:
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
而不是通过以下方式获取IP地址:
InetAddress addresses = InetAddresses.fromLittleEndianByteArray(byte[]);