我需要验证一个类中生成的代码与另一个类中验证的代码相同。但是扭曲在其他类中使用的逻辑是不同的。就像这样。
A类:
String =“0A2D”(假设) 我使用了子串方法,取出0A,2D并将它们转换为十进制值&将它们存储为字节。 最终结果看起来像这样
int a1 =(byte)Integer.parseInt(s,16);这里s = 0A
int a2 =(byte)Integer.parseInt(s,16);这里s = 2D
所以a1将是10(1byte内存),a2将是45(1byte内存)
B组:
在这个类中,我应该使用方法getBytes()。但是当我使用它时,我看到一些奇怪的o / p说[B @ ......首先,我需要有关实际发生的事情的信息。它是如何编码的。其次,这里的o / p应该是与A类的o / p匹配的字节数组,即
byte [] b = {a1a2}(内存2字节) b = {1045}
所以最后A将有2个值,每个值为1byte。但是B将有一个具有相同的两个值的数组,但内存大小将是2字节。
我希望我的问题清楚并没有混淆。
您的帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
您的语言稍有不清楚,但我认为以下内容可以满足您的需求:
byte[] b = new byte[] { a1, a2 };
数组初始值设定项是该语言非常有用的功能。
答案 1 :(得分:0)
什么行代码输出“[B @ ......”? (我假设这些点意味着您截断了输出。)此特定输出看起来好像您正在尝试打印数组 reference 而不是数组的元素。您应该使用for循环来打印单个元素,或者使用Array.toString()来获取数组的String表示。
答案 2 :(得分:0)
当打印数组使用Arrays.toString(arr)
时,可能只是打印错误我假设你说byte [] b = {a1a2}你的意思是byte [] b = {a1,a2}
答案 3 :(得分:0)
如果要打印出byte []的内容,首先需要将其转换为String。
这是将字节数组转换为可读字符串的有用方法:
public static String toHexString(byte[] data)
{
if (data == null) return "";
char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] hexChars = new char[data.length * 2];
int v;
for ( int j = 0; j < data.length; j++)
{
v = data[j] & 0xFF;
hexChars[j*2] = hexArray[v/16];
hexChars[j*2 + 1] = hexArray[v%16];
}
return new String(hexChars);
}
从那里你应该能够解决剩下的问题。