Tag: byte

与C#相比,从Java获取错误的字节数

所以我有一些FRX二进制文件,我试图使用Java的二进制读取方法来获取字符串标题。 我有能力这样做,并使用以下程序指定在C#中读取字节的区域: using System; using System.Collections.Generic; using System.Text; using System.IO; public class GetFromFRX { public static void Main() { StringBuilder buffer = new StringBuilder(); using (BinaryReader b = new BinaryReader(File.Open(“frmResidency.frx”, FileMode.Open))) { try { b.BaseStream.Seek(641, SeekOrigin.Begin); int length = b.ReadInt32(); for (int i = 0; i < length; i++) { buffer.Append(b.ReadChar()); } } catch (Exception […]

char和具有最终访问修饰符的字节 – java

请看下面的示例我无法理解char和byte之间的关系 byte b = 1; char c = 2; c = b; // line 1 给我编译错误,因为c是char类型,b是byte类型,所以在这种情况下必须强制转换 但现在这里的推文是我在代码下运行的时候 final byte b = 1; char c = 2; c = b; // line 2 第2行编译成功它根本不需要任何转换所以我的问题是为什么当我使用带有byte最终访问修饰符时, char c表现不同

java整数到字节,以及字节到整数

我知道 – 在Java-int中是4个字节。 但我希望将int转换为n字节数组,其中n可以是1,2,3或4个字节。 我想把它作为有符号的字节/字节,所以如果我需要将它们转换回int(事件,如果它是1字节),我得到相同的signed int。 我完全清楚从int转换为3或更低字节时精度损失的可能性。 我设法从int转换为n字节,但将其转换回负数会产生无符号结果。 编辑: int到bytes(参数n指定所需的字节数1,2,3或4,无论可能的进动丢失) public static byte[] intToBytes(int x, int n) { byte[] bytes = new byte[n]; for (int i = 0; i >>= 8) bytes[i] = (byte) (x & 0xFF); return bytes; } bytes到int(不管1,2,3或4的字节数) public static int bytesToInt(byte[] x) { int value = 0; for(int i = 0; […]

字符串成字符? (JAVA)

怎么会发生这种情况: char a = ‘\uffff’; //Highest value that char can take – 65535 byte b = (byte)a; //Casting a 16-bit value into 8-bit data type…! Isn’t data lost here? char c = (char)b; //Let’s get the value back int d = (int)c; System.out.println(d); //65535… how? 基本上,我看到一个char是16位。 因此,如果将其转换为byte ,为什么没有数据丢失? (转换为int后的值相同) 提前谢谢你回答我这个无知的问题。 :P 编辑:哇,发现我的原始输出实际上按预期执行,但我刚刚更新了上面的代码。 基本上,将一个字符强制转换为一个字节,然后将其强制转换为char,并保留其原始的2字节值。 这是怎么发生的?

Java可能从int转换为字节错误

当我从jar文件反编译一些类时发生了这种情况。 这是我无法解决的唯一错误。 所有这些错误都是“从int到byte的可能有损转换”。 this.onDemandFetcher.method563(1, 2, i2); this.worldController.method291(i1, j, i, -119); this.method563(2, 3, this.mapIndices3[k]); this.method563(2, 3, this.mapIndices2[k]); 和 public boolean method286(final int j, final int k, final Animable class30_sub2_sub4, final int l, final int i1, final int j1, final int k1, final int l1, final int i2, final int j2, final int k2) { return class30_sub2_sub4 […]

将字节数组转换为png

我有一个使用以下代码从图像中获取的字节数组。 String path = “/home/mypc/Desktop/Steganography/image.png”; File file = new File(path); BufferedImage bfimage = ImageIO.read(file); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bfimage, “png”, baos); baos.flush(); byte[] img_in_bytes = baos.toByteArray(); baos.close(); 然后我使用以下代码将这些字节转换回png图像。 BufferedImage final_img = ImageIO.read(new ByteArrayInputStream(img_in_bytes)); File output_file = new File(“Stegano2.png”); ImageIO.write(final_img, “png”, output_file); 如果我只执行这段代码就完全没问题。 但是,如果我尝试修改其中的一些字节,请这样说: Insert_number_to_image(image_in_bytes, 10); 我的方法“Inset_number_to_image”是这样的: static void Insert_number_to_image(byte[] image, int size){ byte[] size_in_byte […]

Java – 用整数和字节进行位移

考虑以下代码(其中byteIndex是一个int): int bitNumber = b-(8*byteIndex); bitMask = 0x8>>(byte)bitNumber; 这会产生错误 error: possible loss of precision 编译时(必需字节,找到int)。 代码 int bitNumber = b-(8*byteIndex); bitMask = 0x8>>2; 编译好。 这里有什么问题,如何修复第一个允许按int值移位的示例? 编辑:在评论之后,这是一个更完整的例子: 48) int byteIndex; 49) byte bitMask; 50) int bitNumber; // assign value to byteIndex 67) bitNumber = b-(8*byteIndex); 68) bitMask = 0x8>>bitNumber; 并且给出的错误是: …MyClass.java:68: error: possible loss of precision […]

为什么FileInputStream中的read()返回一个整数?

此页面显示,当它想要指示没有更多字节要读取时,该方法可以返回-1。 但是一个字节的范围是-128到127,对吗? 因为返回一个字节,read()的返回类型是不是更有意义? 感谢您的时间。

将byte 附加到另一个byte 的末尾

我有两个byte[]数组,长度未知,我只想将一个附加到另一个的末尾,即: byte[] ciphertext = blah; byte[] mac = blah; byte[] out = ciphertext + mac; 我已经尝试使用arraycopy()但似乎无法让它工作。

Java-将bufferedimage转换为byte 而不写入磁盘

我正在尝试使用java在套接字上发送多个图像,但我需要一种更快的方法将图像转换为字节数组,以便我可以发送它们。 我尝试了以下代码,但它向我的C:\驱动器写了大约10,000张图像。 有没有办法在不写入磁盘的情况下进行此转换? 谢谢! ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //ImageIO.setUseCache(false); ImageIO.write(bi.getImage(), “jpg”, outputStream); byte[] imageBytes = outputStream.toByteArray();