请教如何获取一个汉字的前半个字节的ASCII码?,谢谢

oracleperl 2021-05-16 11:20:44
请教如何获取一个汉字的前半个字节的ASCII码?,谢谢

这个汉字可能是GBK编码,也可能是UTF16,也可能是UTF8编码
我只要获取第一个字节,并将这个字节转成整数,无需考虑CPU大小端。

谢谢
...全文
915 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
q317476707 2021-05-26
  • 打赏
  • 举报
回复
给你几张图片
oracleperl 2021-05-17
  • 打赏
  • 举报
回复
引用 8 楼 失足成万古风流人物 的回复:
一个汉字,用不同的编码,第一个字节是不一样的,比如一个汉字,用UTF8编码会是2个字节,用GBK编码会是3个字节,第一个自己一定是不一样的。所以不指定编码而获取第一个字节的说法是耍流氓
"用UTF8编码会是2个字节,用GBK编码会是3个字节" ================================= UTF-8三个字节,GBK两个字节吧
  • 打赏
  • 举报
回复
一个汉字,用不同的编码,第一个字节是不一样的,比如一个汉字,用UTF8编码会是2个字节,用GBK编码会是3个字节,第一个自己一定是不一样的。所以不指定编码而获取第一个字节的说法是耍流氓
  • 打赏
  • 举报
回复
引用 1 楼 oracleperl 的回复:
byte[] b_gbk = "好".getBytes(); System.out.println(b_gbk[0]); 这样好像可以,但是得到的是 -70,请教: 1. 为啥是负的,不是正的70? 2. 是否这个数值肯定在 0和-127之间,后者0和127之间? 谢谢
你把超过127的数字转化为byte字节数组就是负的,因为单个字节的第一位代表正负,但是组合在一起代表一个数字字后就不一样,就是最高字节的第一位代表正负了,所以在不在这两个范围内要看你的数据而定
爱吃蛋炒饭。 2021-05-16
  • 打赏
  • 举报
回复
等下,我发现个诡异的事 好奇怪啊,汉字不是两个字节储存的吗,而且你的那种方法也是这样,可以取到数组[ 2 ],你可以试试。 有没有大佬啊,我也蒙了。。。
  • 打赏
  • 举报
回复
转成字节截取第一个再转为ascii码
爱吃蛋炒饭。 2021-05-16
  • 打赏
  • 举报
回复
我忘记关闭流了,别学我。。。
爱吃蛋炒饭。 2021-05-16
  • 打赏
  • 举报
回复
package 获取汉字前半个码值;

import java.io.FileInputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        FileInputStream a = null;
        try {
            int ce = (int) ('汉');
            System.out.println(ce);
            a = new FileInputStream("file");
            int aDate = a.read();
            System.out.println("第一个字节值:"+aDate);
            aDate = a.read();
            System.out.println("第二个字节值:"+aDate);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
这样应该可以了吧,file文件中是汉字:汉
oracleperl 2021-05-16
  • 打赏
  • 举报
回复
byte[] b_gbk = "好".getBytes(); System.out.println(b_gbk[0]); 这样好像可以,但是得到的是 -70,请教: 1. 为啥是负的,不是正的70? 2. 是否这个数值肯定在 0和-127之间,后者0和127之间? 谢谢
  • 打赏
  • 举报
回复
看编码 。utf-8是三个字节 GBK是俩个

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧