[英]Java byte Insert value error string to byte
我有一個成員為myByte的類,如下所示。
public class ByteClass {
private Byte myByte;
public Byte getMyByte() {
return myByte;
}
public void setMyByte(Byte myByte) {
this.myByte = myByte;
}
}
我有一個字符串值FF ,我需要將其分配給該類成員,我應該怎么做,因為當我嘗試它的屁股時,我在編譯時出錯
類型不匹配:無法從byte []轉換為byte我知道我不能為字符串使用byte Array,但是我嘗試了幾種方法,但均未成功。anyidea如何將FF值設置為該類?
public class ByteHanlder {
public static void main(String[] args) {
String str = "FF";
byte temp = str.getBytes();
Byte write_data = new Byte(temp);
ByteClass byteClass = new ByteClass();
byteClass.setMyByte(temp);
System.out.println(byteClass.getMyByte());
}
}
假設您確實只想存儲一個字節,則可以使用:
int value = Integer.parseInt("FF", 16);
x.setMyByte((byte) value);
現在,如果您在調試器中查看該值,則將獲得-1的值-但這僅是因為字節已簽名,正如其他答復者所指出的那樣。 如果您想隨時查看無符號值,則可以使用:
// Only keep the bottom 8 bits within a 32-bit integer, which ends up
// treating the original byte as an unsigned value.
int value = x.getMyByte() & 0xff;
您仍然可以只存儲一個字節-然后以無符號方式而不是有符號方式解釋它。 如果你真的只想存儲一個字節-8位-我建議你不要改用short
。
說了這么多,僅需要一個字節就需要一個可變的包裝器類型有些奇怪……也許您可以為我們提供更多關於為什么要使用此包裝器的背景信息,並且我們可以提出更清潔的替代方法。
您的字符串“ FF”似乎是一個十六進制值,對嗎? 因此,您實際上要將其轉換為255的字節值。
您可以使用此處所述的方法將十六進制字符串轉換為字節數組: 使用Java將十六進制轉儲的字符串表示形式轉換為字節數組? 。
在您的情況下,您可以修改該方法以使用2個字母的字符串並返回單個字節而不是字節數組。
String.getBytes
返回一個字節數組,因此您不能將一個字節數組分配給一個字節。
如果要設置FF十六進制值,則可以使用
setMyByte((byte)0xff);
但是仍然存在一個問題,0xff的大小為2個字節,而字節類型的大小為1個字節。 在這種情況下,您可以使用short而不是byte
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.