簡體   English   中英

將單個字節轉換為字符串並返回字節

[英]Convert single byte to string and back to byte

我正在嘗試將單個字節轉換為字符串,然后再將其轉換回原始字節。 但是,下面的斷言失敗了。 任何建議都將深表感謝

import org.junit.Test;
import java.io.UnsupportedEncodingException;
import static org.junit.Assert.assertEquals;

    public class ByteTest {
        private static final String CHARSET = "UTF-8";
        @Test
        public void test() throws UnsupportedEncodingException {
            byte b = (byte)(220);
            String s = new String(new byte[]{b}, CHARSET);
            byte[] parsed = s.getBytes(CHARSET);
            assertEquals(b, parsed[0]); //fails
        }
    }

字節220(0xDC)本身是無效的UTF-8。 以字節0xA1..0xF5開頭的UTF-8字符需要第二個字節。

嘗試另一種編碼,例如ISO-8859-1,它在Java中有效地實現了1到1個字節到字符的往返。

public class ByteTest {
    private static final String CHARSET = "ISO-8859-1";

    @Test
    public void test() throws UnsupportedEncodingException {
        byte b = (byte) (220);
        String s = new String(new byte[] { b }, CHARSET);
        byte[] parsed = s.getBytes(CHARSET);
        assertEquals(b, parsed[0]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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