導航:首頁 > 編程語言 > java0x2

java0x2

發布時間:2024-04-03 17:43:44

java 中右移>>和邏輯右移>>的左操作數怎麼運算的

0xa2 16進制,對應的十進制是162,對應的二進制是10100010(32位,前面的0不顯示)

10100010>>>2 = 00101000 這個正好是十進制的40

(byte) 0xa2 由於byte的最大值是127,所以byte162要取模,結果是-94,對應的二進制是:
>> 2 = ,即十進制-24

>>和>>>的區別是:
>> 帶符號右移,高位補充符號,正0負1
>>>不帶符號右移,高位補充正0
有上面的記過得知,(byte) 0xa2 = -24這是個負數
所以(byte) 0xa2>>>2
會很大

⑵ java中如何實現BCD碼字元串與16進制字元串的互轉

nt main(void)
4{
5 unsigned char array[4] = {"0x0","0x0","0x02","0xe7"};
6 unsigned long num;
7 num = 0;
8 for(int i=0; i<sizeof(array); i++)
9 {
10 num<<=8;
11 num |= array[i];
12 }
13 printf("核拿num = %d",num);
14 return 0;
15
16}

二進制,位元組數組拆氏洞,字元,十六進制,BCD編碼轉換
* 把16進制字旅枯符串轉換成位元組數組
* @param hex
* @return
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}

private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}

public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}

public static final Object bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
ObjectInputStream oi = new ObjectInputStream(in);
Object o = oi.readObject();
oi.close();
return o;
}

public static final byte[] objectToBytes(Serializable s) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream ot = new ObjectOutputStream(out);
ot.writeObject(s);
ot.flush();
ot.close();
return out.toByteArray();
}

public static final String objectToHexString(Serializable s) throws IOException{
return bytesToHexString(objectToBytes(s));
}

public static final Object hexStringToObject(String hex) throws IOException, ClassNotFoundException{
return bytesToObject(hexStringToByte(hex));
}

public static String bcd2Str(byte[] bytes){
StringBuffer temp=new StringBuffer(bytes.length*2);

for(int i=0;i<bytes.length;i++){
temp.append((byte)((bytes[i]& 0xf0)>>>4));
temp.append((byte)(bytes[i]& 0x0f));
}
return temp.toString().substring(0,1).equalsIgnoreCase("0")?temp.toString().substring(1):temp.toString();
}

public static byte[] str2Bcd(String asc) {
int len = asc.length();
int mod = len % 2;

if (mod != 0) {
asc = "0" + asc;
len = asc.length();
}

byte abt[] = new byte[len];
if (len >= 2) {
len = len / 2;
}

byte bbt[] = new byte[len];
abt = asc.getBytes();
int j, k;

for (int p = 0; p < asc.length()/2; p++) {
if ( (abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {
j = abt[2 * p] - '0';
} else if ( (abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {
j = abt[2 * p] - 'a' + 0x0a;
} else {
j = abt[2 * p] - 'A' + 0x0a;
}

if ( (abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {
k = abt[2 * p + 1] - '0';
} else if ( (abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {
k = abt[2 * p + 1] - 'a' + 0x0a;
}else {
k = abt[2 * p + 1] - 'A' + 0x0a;
}

int a = (j << 4) + k;
byte b = (byte) a;
bbt[p] = b;
}
return bbt;
}

public static String BCD2ASC(byte[] bytes) {
StringBuffer temp = new StringBuffer(bytes.length * 2);

for (int i = 0; i < bytes.length; i++) {
int h = ((bytes[i] & 0xf0) >>> 4);
int l = (bytes[i] & 0x0f);
temp.append(BToA[h]).append( BToA[l]);
}
return temp.toString() ;
}

public static String MD5EncodeToHex(String origin) {
return bytesToHexString(MD5Encode(origin));
}

public static byte[] MD5Encode(String origin){
return MD5Encode(origin.getBytes());
}

public static byte[] MD5Encode(byte[] bytes){
MessageDigest md=null;
try {
md = MessageDigest.getInstance("MD5");
return md.digest(bytes);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return new byte[0];
}

}
//關於byte: signed byte 把 0x00 ~ 0xff 映射成范圍 0~127和 -128~-1 兩段,比較簡單的辦法用 (b+256)%256的辦法令其值回到0~255,或者用&0xff並賦給一個int

⑶ java的數字二進制輸出

byte
a
=
1111;
//
這樣定義,這個
1111
到底是二進制,還是10進制,還是
x
進制,系統是不知道的回。。
在這里答,1111
默認被當作
10
進制。。
java
不支持顯式輸入二進制,默認為
10
進制,0
開頭為8進制,比如
01111,0x開頭為16
進制,比如
0x11。。
byte
數據類型所表示的范圍為 -128~127,已經超出范圍了。。

閱讀全文

與java0x2相關的資料

熱點內容
如何發word文件怎麼打開 瀏覽:176
惠普還原系統win10教程 瀏覽:167
iphone6ssunspider 瀏覽:796
java獲取攝像頭 瀏覽:959
怎麼用網線傳文件 瀏覽:24
電導增量法matlab程序 瀏覽:366
手機文件管理在那裡 瀏覽:205
如何取消卸載app的續費 瀏覽:316
數控編程哪個最容易 瀏覽:170
光速互動官方教程 瀏覽:411
谷歌登陸網站打不開怎麼辦 瀏覽:937
java什麼是非同步編程 瀏覽:898
怎麼刪除qq裡面的文件 瀏覽:503
qq鈴聲設置的鈴聲文件在哪裡找 瀏覽:421
有哪些有助於考公的app 瀏覽:237
四字qq網名 瀏覽:666
dcm格式文件能發給醫聖嗎 瀏覽:998
ps文件大卡頓是顯卡問題嗎 瀏覽:616
win7可以用win10易升嗎 瀏覽:56
企業qq營銷qq區別 瀏覽:322

友情鏈接