我需要在前两个字节中发送消息的长度。
计算了消息长度,结果是 752,比如说 02F0 十六进制。现在我需要计算出对应于这个十六进制值的特殊符号。为了得到我使用的那些
int num1 = Integer.parseInt("F0", 16);
char c1 = (char) num1;
获取 -> ð 第一个字符在那里不可见(由于编码),但我确实得到了正确的字符。无论如何,但是当我将这些特殊字符连接到最终消息字符串(以 ASCII 格式)时,它会从 02F0 变为 023f(通过在 ultraedit hex 视图中读取最终消息来确认)。为什么会这样?3F 是十进制的 63,我看到下面的代码片段也发生了同样的事情->
Charset asciicharset = Charset.forName("ASCII");
Charset iso88591charset = Charset.forName("ISO-8859-1");
byte [] a = new byte[]{(byte)0x02, (byte)0xF0};
ByteBuffer inputBuffer = ByteBuffer.wrap(a);
CharBuffer data = asciicharset .decode(inputBuffer);
ByteBuffer outputBuffer = asciicharset .encode(data); --> This is where instead of 240
for F0 I get 63, in fact I tried with any value more than 63 but it always comes back to
that
byte[] outputData = outputBuffer.array();
任何帮助,将不胜感激。谢谢。