你好,所有Ol'Guy新手在这里...... 我已经定义了一个string => final static String Blank =“”; 和一个字节数组 static byte [] LU62_Partner = new byte [8];
在我的逻辑中,我想用空格
初始化byte []数组 // Prep LU6.2 Session
for ( ndx=0 ; ndx < 8 ; ++ndx)
{
LU62_Partner[ndx] = Blank.getBytes() ; // initialize the the LU6.2 partner name byte array w/blanks
}
LU62_Partner = APPC_Partner.getBytes() ; // convert string array to byte array
// if the appc-partner name < 8 bytes, rightmost bytes
// will be padded with blanks
但是在编译时我收到以下错误 src \ LU62XnsCvr.java:199:不兼容的类型 发现:byte [] 必需:字节 LU62_Partner [ndx] = Blank.getBytes();
我再次感到困惑......我认为方法getBytes()会将字符串转换为字节。 再次感谢
盖伊
答案 0 :(得分:4)
getBytes()返回一个数组,因此你试图将一个字节数组合成一个字节
使用
Arrays.fill(LU62_Partner, (byte)' ');
答案 1 :(得分:3)
我想你想要那条线
LU62_Partner[ndx] = Blank.getBytes()[0];
赋值左侧的变量是一个字节,因此右侧的值也应该是一个字节,而不是一个字节数组。
在任何情况下,由于你已经隐含地假设空间是一个字节,为什么不说呢
LU62_Partner[ndx] = (byte) ' ';
或
LU62_Partner[ndx] = 0x20;
(因为十六进制20是空格)?
编辑:正如@MeBigFatGuy指出的那样,Arrays.fill()
会让你彻底消除你的显式循环。