如何在java中使用字节?

Sen*_*l S 1 java string byte

为什么这段代码在这里返回221?这背后的逻辑是什么?这怎么工作?请向我解释一下,因为我是Java新手.

import java.io.UnsupportedEncodingException;


public class Checksrting {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        byte[] byteArray = new byte[2];
        byteArray[0] = 100;
        byteArray[1] = 100;

        Long ID = null;
        try {
            ID = Long.parseLong(new String(byteArray, "utf-8").trim(), 16);
            System.out.print(ID);
        } catch (NumberFormatException | UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么请向我解释一下utf-8和16的用途是什么?

Bac*_*ash 7

100相当于d角色.所以你的字符串就会变成dd.

当你这样做

ID = Long.parseLong(new String(byteArray, "utf-8").trim(), 16);
Run Code Online (Sandbox Code Playgroud)

您正在使用十六进制格式将字符串转换为长数字.

ddis 的十进制值221,这就是你得到那个输出的原因.


utf-8和16的用途是什么?

utf-8是String构造函数将用于构建字符串的字符编码,并且16是用于将字符串转换为long的基数.