簡體   English   中英

Java字節將值錯誤字符串插入字節

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM