【Java终于返回了,奇怪的字节码】教程文章相关的互联网学习教程文章

java – 从文件中读取最后一个字节并截断为大小【代码】

我有一大堆文件,所有文件都应该(应该是)附加到文件末尾的标记字符(1个字节).如何读取最后一个字节(以确保它是字符)并将其截断为大小(即:删除字符)? 我知道我可以阅读整个内容,并将其全部写回去减去最后一个字符,但必须有一种方法来获取特定的字节,不是吗?解决方法:您可以使用RandomAccessFile类来搜索文件的末尾,读取它,然后使用setLength()截断文件. 更新:这是一些代码:File target = new File("/path/to/file"); RandomAcce...

在C#中加密的数据长度为1个字节,无法在Java中解密【代码】

我有一个用Java编写的服务器,它将其RSA密钥转换为.NET使用的XML格式,然后再将其发送到客户端:public String getPublicKeyXML() {try {KeyFactory factory = KeyFactory.getInstance("RSA");RSAPublicKeySpec publicKey = factory.getKeySpec(this.keyPair.getPublic(), RSAPublicKeySpec.class);byte[] modulus = publicKey.getModulus().toByteArray();byte[] exponent = publicKey.getPublicExponent().toByteArray();String mo...

为什么Java I / O中的字节可以表示字符?

为什么Java I / O中的字节可以表示字符? 我看到这些字符只是ASCII.然后它不是动态的,对吧? 这有什么解释吗? 字节流和字符流有什么区别?解决方法:字节不是字符.独自一人,他们甚至不能代表人物. 在计算方面,“字符”是数字代码(或代码序列)与编码或字符集的配对,其定义代码如何映射到真实世界字符(或空白或控制代码). 只有与编码配对后,字节才能表示字符.对于某些编码(如ASCII或ISO-8859-1),一个字节可以表示一个字符…并且许多编...

java – 三重DES解密无效密钥,16字节【代码】

我有一个Android项目,我从我的Web服务获得一个Triple DES加密文本.我需要Triple DES解密. 但是,我收到了无效的密钥异常.我的密钥转换为HEX格式,我收到一个错误:W / System.err:java.security.InvalidKeyException:DES密钥太长 – 应该是8个字节我发现here一个论坛解释说十六进制可能导致问题 “DES密钥是56位,通常以8个字节打包,所以他们给你的16个字节/字符很可能是密钥的十六进制编码字节.你可以得到一个十六进制解码器” 所以...

java – 循环的意外无限字节【代码】

我有以下循环:for (byte i = 0 ; i < 128; i++) {System.out.println(i + 1 + " " + name); }当我执行我的程序时,它会在无限循环中打印-128到127之间的所有数字.为什么会这样?解决方法:byte是1字节类型,因此可以在-128 … 127之间变化,因此条件i< 128总是如此.当你添加1到127时,它会溢出并变为-128,依此类推(无限)循环......

有没有一种聪明的方法来确定Java字节码指令的长度?【代码】

我正在为Java创建一个静态分析工具,并且有一些关于我正在分析的程序的信息,如果我可以从.class文件中的字节码中获取它,将会更容易获得. 我不关心可能在类文件中的每一个instructions.例如,我可能只需要查看是否有任何getfield指令. 问题是,由于每条指令都有一个可变长度,似乎在一般情况下,我需要(在我的代码中)指定每个操作码的长度,然后才能确定(例如)getfield指令的开始和结束位置. 对于其他一些指令集(如x86),有一些规则,如“低...

java – 如何从iText PDFReader获取字节数组【代码】

如何从Itext PDFReader获取字节数组.float width = 8.5f * 72; float height = 11f * 72; float tolerance = 1f;PdfReader reader = new PdfReader("source.pdf");for (int i = 1; i <= reader.getNumberOfPages(); i++) {Rectangle cropBox = reader.getCropBox(i);float widthToAdd = width - cropBox.getWidth();float heightToAdd = height - cropBox.getHeight();if (Math.abs(widthToAdd) > tolerance || Math.abs(heightToA...

Java二进制文字 – 字节值-128【代码】

由于SE 7 Java允许将值指定为二进制文字.文档告诉我’byte’是一种可以保存8位信息的类型,值为-128到127. 现在我不知道为什么,但我不能定义8位但只有7如果我尝试将二进制文字分配给Java中的一个字节,如下所示:byte b = 0b000_0000; //solves to the value 0 byte b1 = 0b000_0001; //solves to the value 1 byte b3 = 0b000_0010; //solves to the value 2 byte b4 = 0b000_0011; //solves to the value 3 依此类推,...

java – 从加载的类中获取字节码【代码】

假设在我的JVM中我有一个加载的类Class< C>我的课.有没有可靠的方法向JVM询问.class的字节码内容?即这样的事情:<C> byte[] getClassBytecode(Class<C> myClass) {return /* the contents of the .class resource where C was loaded from */; }(显然,InputStream与byte []一样好).我知道我可以使用myClass.getResource()(以及朋友)来获取类文件,但是为了获取一个URL来提供getResource感觉错误,可以使用类名称.另外,我不确定在动态...

java – 如何有效地将字节数组转换为字符串【代码】

我有一个151字节的字节数组,通常是一个记录,该记录需要插入到oracle数据库中.在151字节的数组范围内,从0到1是记录id,2到3是引用id,4到9是日期值.字节数组中的以下数据是日期值.我想将其转换为字符串byte[] b= {48,48,49,48,48,52}; // when converted to string it becomes 10042. new String(b); // current approach有没有办法有效地将某些范围的字节数组(Arrays.copyOfRange(b,0,5))转换为字符串.解决方法: new String(b, 0 ,...

如何在Java中将字节数组转换为十六进制格式【代码】

我知道您可以使用printf并使用StringBuilder.append(String.format(“%x”,byte))将值转换为HEX值并在控制台上显示它们.但我希望能够实际格式化字节数组,以便每个字节显示为HEX而不是十进制. 这是我的代码的一部分,我已经说过我说的前两种方式:if(bytes > 0){byteArray = new byte[bytes]; // Set up array to receive these values.for(int i=0; i<bytes; i++){byteString = hexSubString(hexString, offSet, CHARSPERBYTE, fal...

为什么JSR / RET不推荐使用Java字节码?

有谁知道为什么在Java 6中不推荐使用JSR / RET字节码对? 我在网上找到的唯一有意义的解释是,他们通过运行时进行代码分析更难以执行.有谁知道另一个原因?解决方法:由于一些正常的字节码约束(例如在进入JSR时具有一致的堆栈形状),JSR和RET使字节码验证变得更加困难.好处很小(在某些情况下可能会稍微小一些),并且验证程序在处理奇怪的JSR / RET模式(以及潜在的安全漏洞以及相关的完整验证运行时成本)方面仍存在困难,这使得它成为一个...

java – 为什么字节b =(字节)0xFF等于整数-1?【代码】

为什么字节b =(字节)0xFF等于整数-1? 例如:int value = byte b = (byte) 0xFF; System.out.println(value);它会打印-1?解决方法:字节用Java签名.在二进制0x00中为0,001为1,依此类推,但所有1(即0xFF)为-1,0xFE为-2,依此类推.请参见Two’s complement,这是使用的二进制编码机制.

java – GZIP压缩到一个字节数组【代码】

我正在尝试编写一个可以压缩数据的类.下面的代码失败(没有抛出异常,但目标.gz文件为空.)此外:我不想直接生成.gz文件,就像在所有示例中一样.我只想得到压缩数据,以便我可以例如在将数据写入文件之前对其进行加密. 如果我直接写一个文件一切正常:import java.io.*; import java.util.zip.*; import java.nio.charset.*;public class Zipper {public static void main(String[] args){ byte[] dataToCompress = "This is the tes...

android – java.lang.OutOfMemoryError:无法分配31961100字节分配15257484个空闲字节和14MB直到OOM【代码】

我正在做如下图所示的缩放地图Bitmap resizedBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(picturePath), 960, 730, false);做这个处理我上传图像有时我得到低于类型错误java.lang.OutOfMemoryError: Failed to allocate a 31961100 byte allocation with 15257484 free bytes and 14MB until OOM请帮帮我怎么解决?解决方法:这是你如何使用BitmapFactory.Options:final BitmapFactory.Options options = new Bi...