1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.socks;
17
18 import io.netty.util.internal.StringUtil;
19
20 final class SocksCommonUtils {
21 public static final SocksRequest UNKNOWN_SOCKS_REQUEST = new UnknownSocksRequest();
22 public static final SocksResponse UNKNOWN_SOCKS_RESPONSE = new UnknownSocksResponse();
23
24
25
26
27 private SocksCommonUtils() {
28
29 }
30
31 private static final char ipv6hextetSeparator = ':';
32
33
34
35
36 public static String ipv6toStr(byte[] src) {
37 assert src.length == 16;
38 StringBuilder sb = new StringBuilder(39);
39 ipv6toStr(sb, src, 0, 8);
40 return sb.toString();
41 }
42
43 private static void ipv6toStr(StringBuilder sb, byte[] src, int fromHextet, int toHextet) {
44 int i;
45 toHextet --;
46 for (i = fromHextet; i < toHextet; i++) {
47 appendHextet(sb, src, i);
48 sb.append(ipv6hextetSeparator);
49 }
50
51 appendHextet(sb, src, i);
52 }
53
54 private static void appendHextet(StringBuilder sb, byte[] src, int i) {
55 StringUtil.toHexString(sb, src, i << 1, 2);
56 }
57
58 }