「java字节换算」字节和字数换算

博主:adminadmin 2023-01-18 13:12:06 429

本篇文章给大家谈谈java字节换算,以及字节和字数换算对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA中怎么将int数据转换为byte数据?

JAVA中根据以下代码将int数据转换为byte数据:

public static byte[] int32ToBytes(int val) {

int size = Integer.SIZE / Byte.SIZE;

byte[] ret = new byte[size];

for (int i = 0; i size; ++i) {

ret[i] = (byte) (val (8 * i) 56);

}

return ret;

}

扩展资料

Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。

byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。

运算规则:

####正数的最高位都是 0 ,正数的值就是二进制表示的值。 ####

####负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。 ####

java中如何将byte[]里面的数据转换成十六进制?

方法如下:

/* *

* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)

*来转换成16进制字符串。

* @param src byte[] data

* @return hex string

*/  

public static String bytesToHexString(byte[] src){

StringBuilder stringBuilder = new StringBuilder("");

if (src == null || src.length = 0) {

return null;

}

for (int i = 0; i src.length; i++) {

int v = src[i] 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

此方法能将byte[]转化成16进制字符串,

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java中一个byte是多少个字节,如果byte数组的长度是1024,是1mb的大小吗?

1byte 就是1个字节

1byte = 8bit

1KB = 1024 byte

1MB = 1024 KB

所以如果byte数组的长度是1024,应该是1KB的大小

求java编程 字节byte怎么转换成整形int

1.byte的大小为8bits而int的大小为32bits 

2.java的二进制采用的是补码形式 

在这里先温习下计算机基础理论 

byte是一个字节保存的,有8个位,即8个0、1。 

8位的第一个位是符号位, 

也就是说0000 0001代表的是数字1 

1000 0000代表的就是-1 

所以正数最大位0111 1111,也就是数字127 

负数最大为1111 1111,也就是数字-128 

上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码 

1、反码: 

一个数如果是正,则它的反码与原码相同; 

一个数如果是负,则符号位为1,其余各位是对原码取反; 

2、补码:利用溢出,我们可以将减法变成加法 

对于十进制数,从9得到5可用减法: 

9-4=5 因为4+6=10,我们可以将6作为4的补数 

改写为加法: 

9+6=15(去掉高位1,也就是减10)得到5. 

对于十六进制数,从c到5可用减法: 

c-7=5 因为7+9=16 将9作为7的补数 

改写为加法: 

c+9=15(去掉高位1,也就是减16)得到5. 

在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。 

⑴一个数为正,则它的原码、反码、补码相同 

⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1 

- 1的原码为 10000001 

- 1的反码为 11111110 

+ 1 

- 1的补码为 11111111 

0的原码为 00000000 

0的反码为 11111111(正零和负零的反码相同) 

+1 

0的补码为 100000000(舍掉打头的1,正零和负零的补码相同) 

Integer.toHexString的参数是int,如果不进行0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位, 

例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。 

和0xff相与后,高24比特就会被清0了,结果就对了。 

---- 

Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。 

而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。

来自博客友zhouyong0的分享

java中如何计算一个字符串的byte长度(一个汉字多少字符)

中文并不一定是占两个字节的,具体占多少字节是跟具体的编码方式相关的。

比如说:GB2312、GBK、GB18030

编码是占用两个字节的,但是

UTF-8

编码的话至少需要占用三个字节。

有一个简单方法,就是把大于

0xff

的字符都作为两个字符(当然是在

GBK

环境下)

Java

code

publicstaticint

count(String

str)

{

if(str

==null||

str.length

==0)

{

return0;

}

int

count

=0;

char[]

chs

=

str.toCharArray();

for(int

i

=0;

i

chs.length;

i++)

{

count

+=

(chs[i]

0xff)

?2

:

1;

}

return

count;

}

或者你直接使用

int

len

=

str.getBytes("gbk");上面代码假设你的数据库编码格式是

GBK

的,而不是

UTF-8

的,如果是

UTF-8

的话,上面的代码无效!1字节等于8比特,一个字母是1字节,而一个汉字要用2个字节。一个汉字=2个字符

关于java字节换算和字节和字数换算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。