java中int转化为bytes[]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中int转化为bytes[]相关的知识,希望对你有一定的参考价值。

呵呵,我能理解你,你问这个问题的确有点无厘头,有这个必要吗?你想啊,一个int怎么转换为bytes[]呢?如果一定要做也行。byte是8位的二进制,int是32位的二进制,可以将32位拆开,放入byte[]中。这就是原理。具体做法:调用Integer里面的toBinaryString()方法,将你的int转换为二进制,这个二进制是String类型的,在调用String里面的getBytes(),这样就可以将int转换为byte[]了,这题就是在玩二进制,知道就行了。追问

主要是要对一串数字,比如说时间提取md5码,但是java提供的那个md5的api形参是byte[]型的,这个应该怎么办呢。

参考技术A public class Convert
public static void main(String args[])
Integer in=new Integer(10);
System.out.println("原数字为-->"+in);
byte b=in.byteValue();
System.out.println("转化成byte-->"+b);


转成byte可以,转成byte[]好像不可以吧。至少我不知道怎么转。。lz要是知道麻烦给我说下方法。
参考技术B 首先我想请问楼主你做什么需要用到把int转换为byte数组类型。

其次,api不是没提供,是没必要提供。建议楼主下去看看什么是byte。
参考技术C 查看api,应该有吧追问

没有,integer中都看遍了

Java中InputStream和String之间的转化

https://blog.csdn.net/lmy86263/article/details/60479350

 

在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的。
1、InputStream转化为String
1.1 JDK原生提供

方法一:
byte[] bytes = new byte[0];
bytes = new byte[inputStream.available()];
inputStream.read(bytes);
String str = new String(bytes);

1
2
3
4
5

方法二:
String result = new BufferedReader(new InputStreamReader(inputStream))
.lines().collect(Collectors.joining(System.lineSeparator()));

1
2
3

方法三:
String result = new BufferedReader(new InputStreamReader(inputStream))
.lines().parallel().collect(Collectors.joining(System.lineSeparator()));

1
2
3

方法四:
Scanner s = new Scanner(inputStream).useDelimiter("\A");
String str = s.hasNext() ? s.next() : "";

1
2
3

方法五:
String resource = new Scanner(inputStream).useDelimiter("\Z").next();
return resource;

1
2
3

方法六:
StringBuilder sb = new StringBuilder();
String line;

BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
while ((line = br.readLine()) != null) {
sb.append(line);
}
String str = sb.toString();
return str;

1
2
3
4
5
6
7
8
9
10

方法七:
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
String str = result.toString(StandardCharsets.UTF_8.name());
return str;

1
2
3
4
5
6
7
8
9

方法八:
BufferedInputStream bis = new BufferedInputStream(inputStream);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while(result != -1) {
buf.write((byte) result);
result = bis.read();
}
String str = buf.toString();
return str;

1
2
3
4
5
6
7
8
9
10

1.2 Apache Common提供

方法九:
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, StandardCharsets.UTF_8.name());
String str = writer.toString();

1
2
3
4

方法十:
String str = IOUtils.toString(inputStream, "utf-8");

1
2

1.3 Google Guava提供

方法十一:
String str = CharStreams.toString(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

1
2

方法十二:
String str = new String(ByteStreams.toByteArray(inputStream));

1
2

针对一个2MB的文件的输入流,多次执行测试如下(单位是毫秒):

方法十: 111
方法十一: 236
方法十二: 36
方法一: 36
方法二: 87
方法三: 66
方法四: 101
方法五: 178
方法六: 40
方法七: 21
方法八: 107
方法九: 31

从上述结果来看,方法七和方法九更好一些,而方法五和方法十一会更差一些。
2、String转化为InputStream
2.1 JDK原生提供

InputStream is = new ByteArrayInputStream(str.getBytes());

1

2.2 Apache Common提供

InputStream targetStream = IOUtils.toInputStream(str, StandardCharsets.UTF_8.name());

1

2.3 Google Guava提供

InputStream targetStream =
new ReaderInputStream(CharSource.wrap(str).openStream(), StandardCharsets.UTF_8.name());

1
2


---------------------
作者:lmy86263
来源:CSDN
原文:https://blog.csdn.net/lmy86263/article/details/60479350
版权声明:本文为博主原创文章,转载请附上博文链接!

以上是关于java中int转化为bytes[]的主要内容,如果未能解决你的问题,请参考以下文章

Java中InputStream和String之间的转化

在Java中如何将InputStream转成String字符串?

python 中将str类型转化为int

Java语言中,如何将String转化成Int数组

在JAVA中弧度怎么转化为角度

Java 如何将String转化为Int