如何在保留所有“。”的同时将字节数组转换为字符串?
How to convert byte array to string while keeping all "."?
我正在尝试将字节数组转换为字符串。这是包含 "www.google.ca".
的 udp 数据包的一部分
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");
为什么我得到的是 "wwwgoogleca" 而不是 "www.google.ca"?
在 Eclipse 中我什至看到了这个:
我尝试了很多字符集,但我似乎找不到我做错了什么。
提前谢谢你,
纪尧姆
字节数组不包含www.google.ca
相反,它看起来像是包含三个独立的字符序列,其中每个序列都以一个包含序列长度(以字节为单位)的字节为前缀。这是一种相当普通的格式,用于在二进制数据包中发送字符串。
所以你得到 3 www 6 google 2 ca
我的猜测是,您应该将每个字符串识别为 DNS 名称组件,然后 assemble 自己将它们识别为以点分隔的字符串。
您是否对您尝试读取的 UDP 数据包有良好的规范?那应该有更多的信息。
(我看到您正在尝试回答 DNS 请求。DNS 协议记录在 RFC 中:RFC 1035 数据包的 QNAME 部分与您找到的内容相对应。)
我正在尝试将字节数组转换为字符串。这是包含 "www.google.ca".
的 udp 数据包的一部分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");
为什么我得到的是 "wwwgoogleca" 而不是 "www.google.ca"?
在 Eclipse 中我什至看到了这个:
我尝试了很多字符集,但我似乎找不到我做错了什么。
提前谢谢你,
纪尧姆
字节数组不包含www.google.ca
相反,它看起来像是包含三个独立的字符序列,其中每个序列都以一个包含序列长度(以字节为单位)的字节为前缀。这是一种相当普通的格式,用于在二进制数据包中发送字符串。
所以你得到 3 www 6 google 2 ca
我的猜测是,您应该将每个字符串识别为 DNS 名称组件,然后 assemble 自己将它们识别为以点分隔的字符串。
您是否对您尝试读取的 UDP 数据包有良好的规范?那应该有更多的信息。
(我看到您正在尝试回答 DNS 请求。DNS 协议记录在 RFC 中:RFC 1035 数据包的 QNAME 部分与您找到的内容相对应。)