jdk-求助:JAVA生成的汉字每个字节为什么是32位,是不是与操作系统有关,原理是什么

问题描述

求助:JAVA生成的汉字每个字节为什么是32位,是不是与操作系统有关,原理是什么

32位JDK,中文GBK编码占用2个字节,“张”打印出来是由两个字节组成,为什么每个字节是32位,只用到2个字节的后8位组成,其他高位都是1。如果是英文,就是占用1个字节8位,是没问题的。

解决方案

跟操作系统无关,因为我是64位系统。其实你打印的是 int 类型的, 1个int 4个字节 所以32位。

解决方案二:

要这么说的话,64位JDK岂不是要占用两个64位了……

应该只是打印方法的问题吧,即Java如何解释<0的Byte,类似于C语言里面的(int)ch,按最高bit进行符号扩展。

解决方案三:

还看编码吧
看编码方式:utf-8码的中文都是3字节的,而 gbk/gbk18030 是2字节的。

解决方案四:

byte[i]明明只有8位的,你用 Inter.toBinaryString() 转换后还要用 substring() 截取一下。

解决方案五:

打印方法问题,1个int 4个字节 所以32位,不过楼主真的很细心,我还从未关心过这个。。

时间: 2024-12-22 03:26:10

jdk-求助:JAVA生成的汉字每个字节为什么是32位,是不是与操作系统有关,原理是什么的相关文章

Java 生成 UUID

阅读目录 1.UUID 简介 2.UUID 组成 3.项目实战 回到顶部 1.UUID 简介      UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分.      UUID 的目的,是让分布式系统中的所有元素,都能有唯一

使用jsp生成彩色汉字验证码

js|汉字|验证码 <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %> <%! //生成随机颜色 Color getRandColor(Random random,int fc,int bc) { if(fc>255) fc=255; if(bc>255) bc=255; int r=f

用C#生成中文汉字验证码的基本原理

汉字|验证码|中文 前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^ 我不得不佩服腾讯为了防止目前网络上横行的QQ号码自动注册机而采取中文验证码的手段.仔细想了想感觉用程序生成随机的中文验证码并不是很难,下面就来介绍一下使用C#生成随机的中文汉字的原理. 1.汉字编码原理 到底怎么办到随机生成汉字的呢?汉字从哪里来的呢?是不是有个后台数据表,其中存放了所需要的所有汉字,使用程序随机取出几个汉字组合

通过枚举控制比较TreeSet内容排序(实现接口comparator);随机生成一个汉字

随机生成一个汉字 /** * 随机生成一个汉字 * @return * @throws UnsupportedEncodingException */ public static String createStr() throws UnsupportedEncodingException { String str = null; int hightPos, lowPos; // 定义高低位 Random random = new Random(); hightPos = (176 + Math.

运用Jsp技术生成彩色汉字验证码

一些网站采用了字母和数字的验证码,数字和字母加起来一共30多个,如果有心,还是能够通过方法识别出来. 我在网上看到一篇文章"jsp彩色验证码",我进行了加强,生成的验证码内容为汉字,可以方便应用在面向汉语网民的网站认证上. 当然,我还看到别人考虑的几种方法: 1.生成计算题,比如20+34*(23-12)=?,用户必须输入正确的答案才能通过验证,这个想法挺好,但是用户必须打开计算器进行计算,增加了用户的难度 2.问一些常见的问题,比如"人"这个字由几笔组成.这也是不

java生成随机数的方法

  本文实例讲述了java生成随机数的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 package com.tool.code; import java

教你如何使用JSP生成彩色汉字验证码

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 一些网站采用了字母和数字的验证码,数字和字母加起来一共30多个,如果有心,还是能够通过方法识别出来. 我在网上看到一篇文章"jsp彩色验证码",我进行了加强,生成的验证码内容为汉字,可以方便应用在面向汉语网民的网站认证上. 当然,我还看到别人考虑的几种方法: 1.生成计算题,比如20+34*(23-12)=?,用户必须输入

java EE 中汉字转码问题

问题描述 java EE 中汉字转码问题 为什么汉字转码有的要用new String(pdtname.getBytes(""ISO-8859-1"")GBK"")有的要用new String(pdtname.getBytes(""UTF-8"")GBK""),现在在svn中是同一个项目,一个转码在另一个电脑上还失效了? 解决方案 你说的是Web项目还是客户端程序?同一个项目是指同一段代码

java 生成随机的6位字符 包括a-z A-Z 0-9

问题描述 java 生成随机的6位字符 包括a-z A-Z 0-9 java 生成随机的6位字符 包括a-z A-Z 0-9 解决方案 public static void main(String[] args) { String a = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] rands = new char[6]; for (int i = 0; i < rands.le