草庐IT

Java隐式转换int到byte

我即将开始做一些需要读取字节和创建字符串的工作。读取的字节表示UTF-16字符串。因此,为了测试一下,我想将UTF-16编码的简单字节数组转换为字符串。数组中的前2个字节必须代表字节顺序,因此必须是0xff0xfe或0xfe0xff。所以我尝试按如下方式创建字节数组:byte[]bytes=newbyte[]{0xff,0xfe,0x52,0x00,0x6F,0x00};但我得到了一个错误,因为0xFF和0xFE太大而无法放入一个字节(因为字节是用Java签名的)。更准确地说,错误是无法将int转换为字节。我知道我可以通过强制转换从int显式转换为byte并获得所需的结果,但这不是我的

java - CipherInputStream 仅读取 16 个字节 (AES/Java)

我正在使用CipherInputStream和CipherOutputStream来使用AES加密文件。encrypt(...)似乎工作正常,但我的decrypt(...)函数只解密文件的前16个字节。这是我的类(class):publicclassAESFiles{privatebyte[]getKeyBytes(finalbyte[]key)throwsException{byte[]keyBytes=newbyte[16];System.arraycopy(key,0,keyBytes,0,Math.min(key.length,keyBytes.length));returnk

java - 在 Java 中转换字节后正值如何变为负值?

publicclassTest1{publicstaticvoidmain(String[]args){byteb1=40;byteb=(byte)128;System.out.println(b1);System.out.println(b);}}输出是40-128我理解第一个输出是40但第二个输出是-128这怎么可能?是否有可能是因为它超出了它的范围?如果是的话,字节转换后它是如何工作的……帮助我 最佳答案 当您将128(10000000二进制)转换为八位byte类型时,符号位设置为1,因此该数字被解释为负数。Java使用Two

java - 带字节数组的邮件附件

我有一个名为lSession的javax.mail.Session和一个MimeMessagelMessage:SessionlSession=Session.getDefaultInstance(properties);MimeMessagelMessage=newMimeMessage(lSession);我得到了一个包含文件表示的字节数组列表:ListpPiecesJointes我尝试将这些文件附加到邮件中,但无法修复它....if(!pPiecesJointes.isEmpty()){lMultipart=newMimeMultipart();lMessageBodyPart=

java - 处理 Java 字符串中的 Unicode 代理值

考虑以下代码:byteaBytes[]={(byte)0xff,0x01,0,0,(byte)0xd9,(byte)0x65,(byte)0x03,(byte)0x04,(byte)0x05,(byte)0x06,(byte)0x07,(byte)0x17,(byte)0x33,(byte)0x74,(byte)0x6f,0,1,2,3,4,5,0};StringsCompressedBytes=newString(aBytes,"UTF-16");for(inti=0;i得到以下不正确的输出:ff01,0,fffd,506,717,3374,6f00,102,304,500.但是,如

java - “Type mismatch: cannot convert int to byte”

我看到有人问关于错误“类型不匹配:无法将int转换为字节”的问题。但它们大多是由涉及的算术运算引起的。这是我的案例:(当我想在EclipseKepler中玩位时会发生这种情况)//java7binaryliteralsbytea=0b01111111;//8-bititcompilesbyteb=0b10000000;//8-biterror:Typemismatch:cannotconvertinttobyte.bytec=(byte)0b10000000;//8-bititworksfineifcasted.问题是,如果它是8位并且最高位是1,那么编译器会给出错误。我想知道为什么。

java - "Java Modified UTF-8 Encoding"是什么意思?

“Java修改的UTF-8编码”是什么意思?它与普通的UTF-8编码有何不同? 最佳答案 这在DataInput的javadoc中有详细描述。:ModifiedUTF-8ImplementationsoftheDataInputandDataOutputinterfacesrepresentUnicodestringsinaformatthatisaslightmodificationofUTF-8.(ForinformationregardingthestandardUTF-8format,seesection3.9Unicode

Java - 将人类可读大小转换为字节

我找到了很多关于将原始字节信息转换为人类可读格式的信息,但我需要做相反的事情,即将字符串“1.6GB”转换为长值1717990000。是否有内置的/明确的方法来做到这一点,还是我几乎必须自己动手?[编辑]:这是我的第一次尝试......staticclassByteFormatextendsNumberFormat{@OverridepublicStringBufferformat(doublearg0,StringBufferarg1,FieldPositionarg2){//TODOAuto-generatedmethodstubreturnnull;}@Overridepubli

java - 在 Java 中将 bytes 转换为 String 时会发生什么?

我在Java中尝试将字节转换为字符串时遇到问题,代码如下:byte[]bytes={1,2,-3};byte[]transferred=newString(bytes,Charsets.UTF_8).getBytes(Charsets.UTF_8);并且原始字节和传输字节不一样,分别是[1,2,-3][1,2,-17,-65,-67]我曾经认为这是由于UTF-8字符集映射为负数“-3”。所以我把它改成“-32”。但是传输的数组保持不变![1,2,-32][1,2,-17,-65,-67]所以我非常想知道当我调用newString(bytes)时到底发生了什么:)

java - 作为 byte[]、Key 或 String 的静态 secret ?

我已经开始使用JJWT在我的服务器应用程序上处理JWT。我的JWTsecret将存储在resources文件夹中,我将使用Properties类加载secret。JJWT提供了三种对JWT进行签名的方法,一种使用byte[],一种使用String,另一种使用Key:JwtBuildersignWith(SignatureAlgorithmvar1,byte[]var2);JwtBuildersignWith(SignatureAlgorithmvar1,Stringvar2);JwtBuildersignWith(SignatureAlgorithmvar1,Keyvar2);问题:关