Java 如何将字节数组转换为字符串,同时保留所有"&引用;?
我正在尝试将字节数组转换为字符串。这是包含“www.google.ca”的udp数据包的一部分 为什么我得到的是“www.google.ca”而不是“www.google.ca” 在Eclipse中,我甚至看到: 我尝试了许多字符集,但似乎找不到我做错了什么 提前谢谢大家,Java 如何将字节数组转换为字符串,同时保留所有"&引用;?,java,encoding,character-encoding,binary,byte,Java,Encoding,Character Encoding,Binary,Byte,我正在尝试将字节数组转换为字符串。这是包含“www.google.ca”的udp数据包的一部分 为什么我得到的是“www.google.ca”而不是“www.google.ca” 在Eclipse中,我甚至看到: 我尝试了许多字符集,但似乎找不到我做错了什么 提前谢谢大家, Guillaume字节数组不包含www.google.ca 相反,它看起来像是包含三个独立的字符序列,其中每个序列的前缀是一个字节,该字节包含序列的长度(以字节为单位)。这是一种以二进制数据包形式发送字符串的格式 所以你得到
Guillaume字节数组不包含www.google.ca 相反,它看起来像是包含三个独立的字符序列,其中每个序列的前缀是一个字节,该字节包含序列的长度(以字节为单位)。这是一种以二进制数据包形式发送字符串的格式 所以你得到了3万维网6谷歌2 ca 我的猜测是,您应该将每个字符串识别为DNS名称组件,并将它们自己组装成一个点分隔的字符串 你有一个很好的UDP数据包的规范吗?这应该有更多的信息
(我看到您正在尝试回答DNS请求。DNS协议记录在RFC中:数据包的QNAME部分与您找到的内容相对应。)您是如何得出
QDNBARRY
的内容的?一个点应该是46
。6
和2
从何而来?看看你的字节数组。这些“点”实际上都不是点。你用的是什么编码?查找3
、6
和2
,看看这些字符是什么。我正在运行一个本地自制的java dns服务器(学校作业)。然后使用cmd,我对www.google.ca进行了nslookup,并对包含限定域名的部分(www.google.ca)进行了筛选。谢谢@antlesoft,现在这很有意义!
byte[] QDNBArray = [3, 119, 119, 119, 6, 103, 111, 111, 103, 108, 101, 2, 99, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
String s = new String(QDNBArray, "UTF-8");