Tag: 字节

Android内存泄漏,EMA可疑:“byte ”由“”加载

我正在写一个小的单活动Android应用程序,并得到内存泄漏错误,因为我找不到原点。 首先,应用程序计算基本内容并以结构化方式显示结果。 计算是微不足道的,虽然有一些图像,但它们大约有50个图标,总共少于4MB。 我已经安装了Eclipse Memory Analyzer并检查了它的堆转储,Leak Suspects Report说: 问题可疑1:由加载的“byte []”的477个实例占用78.116.240(76,46%)个字节。 dominator_tree 我既不知道那些字节数组是什么,也不知道GC根或任何东西,因为数组在统治者树中没有父母。 我不经常为Android编程,我拼命想弄清楚,从今天起这里发生了什么。 当我使用应用程序并观察ADM中使用的堆大小/%时,我直接以80%的使用量开始并随着我的使用而变大。 (也显示1字节数组(byte [],boolean []))直到应用程序在AVD上崩溃,我的真实设备可以处理它更长一点。 我知道我可以把尺寸做得更大,但这对我来说没有解决方案,因为我认为我从一开始就遇到了这个问题,现在它刚刚达到临界点。

使用hex数初始化无符号字节数组

我知道Java中缺少无符号字节然后如何使用0到255之间的整数(hex)初始化字节数组? final byte assoc_resp_msg_int[] = new byte[] { 0xe3, 0x00, //APDU CHOICE Type(AareApdu) 0x00, 0x2c, //CHOICE.length = 44 0x00, 0x00, //result=accept 0x50, 0x79, //data-proto-id = 20601 0x00, 0x26, //data-proto-info length = 38 0x80, 0x00, 0x00, 0x00, //protocolVersion 0x80, 0x00, //encoding rules = MDER 0x80, 0x00, 0x00, 0x00, //nomenclatureVersion 0x00, 0x00, 0x00, 0x00, //functionalUnits, normal Association […]

将字符串表示forms转换为字节

我刚刚开始学习文件压缩,我遇到了一些障碍。 我有一个应用程序,将一个字符串,如“程序”编码为压缩二进制表示”010100111111011000″ (请注意,它仍然存储为字符串)。 Encoding g 111 r 10 a 110 p 010 o 011 m 00 现在我需要使用FileOutputStream将其写入文件系统,我遇到的问题是,如何将字符串“010100111111011000”转换为使用FileOutputStream写入文件系统的byte[] / byte s? 我之前从未使用过位/字节,所以我在这里处于死路。

Java中字节数组的可用内存

释放由字节数组分配的内存的最佳方法是什么(Java中的新字节[size])?

将字节(java数据类型)值转换为位(仅包含8位的字符串)

我需要将声明为字节数据类型的值转换为8位的字符串。 是否有任何Java库方法可以做到这一点? 例如,它应该在-128中输出“10000000”。 另外,输入-3应该给出“11111101”。 (我手工换了这些。) 在您认为这已被多次回答之前,请让我解释为什么我感到困惑。 名称“字节”有点模棱两可。 所以,跟随其他答案很难。 对于我的问题, byte指的是占用8位的java数据类型 ,其值范围为-128到127.我也不是指“字节数组”。 我的问题是关于仅将单个值转换为其8位表示。 而已。 我试过这些: byte b = -128; //i want 10000000 Integer.toBinaryString(b); //prints 11111111111111111111111110000000 Integer.toString(b, 2); //prints -10000000 如果没有内置方法,你能建议任何方法(可能是位移)吗?

如何在Java中将int转换为三个字节?

我试图将一个int转换为三个bytes表示int (big endian)。 我确定它与逐位和位移有关。 但我不知道如何去做。 例如: int myInt; // some code byte b1, b2 , b3; // b1 is most significant, then b2 then b3. *注意,我知道int是4个字节,三个字节有可能过度/不足。

计算字符长度的有效方法,具体取决于编码方式

考虑到字符编码,计算字符字节长度的最有效方法是什么? 编码只能在运行时知道。 例如,在UTF-8中,字符具有可变字节长度,因此需要单独确定每个字符。 到目前为止,我已经想出了这个: char c = getCharSomehow(); String encoding = getEncodingSomehow(); // … int length = new String(new char[] { c }).getBytes(encoding).length; 但是这在循环中是笨拙和低效的,因为每次都需要创建一个new String 。 我在Java API中找不到其他更有效的方法。 有一个String#valueOf(char) ,但根据它的来源它基本上与上面相同。 我想这可以通过像位移这样的按位运算来完成,但这是我的弱点,我不确定如何在这里考虑编码:) 如果您对此有疑问,请查看此主题 。 更新: @Bkkbrad的答案在技术上是最有效的: char c = getCharSomehow(); String encoding = getEncodingSomehow(); CharsetEncoder encoder = Charset.forName(encoding).newEncoder(); // … int length = encoder.encode(CharBuffer.wrap(new char[] { […]

AES加密IV

我在下面使用这个(E.1)作为我的应用程序,显然有一个巨大的安全漏洞,我认识并理解。 我对加密越来越感兴趣,想要更好地理解它,我需要生成一个随机密钥和一个IV,但我不确定如何正确地做到这一点有人可以向我解释熟悉AES加密的人如何工作(IV&KEY )所以我将来能够更好地理解并且可以运用我的知识,本质上我只是想让代码更安全,谢谢。 (E.1) byte[] key = “mykey”.getBytes(“UTF-8”); private byte[] getKeyBytes(final byte[] key) throws Exception { byte[] keyBytes = new byte[16]; System.arraycopy(key, 0, keyBytes, 0, Math.min(key.length, keyBytes.length)); return keyBytes; } public Cipher getCipherEncrypt(final byte[] key) throws Exception { byte[] keyBytes = getKeyBytes(key); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, “AES”); IvParameterSpec ivParameterSpec = […]

Java中可用的最佳可resize的循环字节缓冲区是什么?

我需要Java中的字节缓冲类来实现单线程使用。 我应该能够在缓冲区的后面插入数据并在前面读取数据,摊销成本为O(1)。 缓冲区应该在它满时resize,而不是抛出exception或其他东西。 我可以自己编写一个,但如果在标准Java包中不存在,我会感到非常惊讶,如果没有,我希望它存在于一些经过良好测试的公共库中。 你会推荐什么?

BigInteger – > byte – > Biginteger。 看起来相等,但如果声明失败

我正在玩我为自己存储公钥的想法。 为此,我需要在某种变量中转换BigInteger,然后从该值重新创建BigInteger。 我已经搜索了Stackoverflow以找到执行此操作的最佳方法是使用byte []。 这是我在Eclipse中的代码: import java.math.BigInteger; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPublicKey; public class Vaja2 { public static void main(String[] args){ try { // Create RSA Keypair (to obtain a BigInteger) KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(1024); KeyPair keypair = kpg.generateKeyPair(); // Extract the public key RSAPublicKey publicKey = (RSAPublicKey) keypair.getPublic(); // Get the public […]