作者gimmy731031 (yuancheng)
看板java
標題[問題] Byte Unsigned
時間Tue Sep 27 21:43:18 2011
各位先進大家好,小弟遇到一個問題相當疑惑,
想請問Java中Byte有可能可以存放大於127的值進去嗎?
今天聽了同事說可以自己寫一個function,把Byte改成Unsigned,
更改原本-128~127的值域,變成0~255的範圍,
之後再把宣告大於127的值塞入DB中...
也就是說原本byte a = (byte)128,正常來說會存入-128進去,
但我希望就是存入128進去,讀出來也是128(因為負值寫入Oracle讀取會有問題),
目前我只知道可以寫個補數function(0xff)把原本負數值改成正值,
但那不是我要的,不知道是不是真的可以更改byte的值域~
以上,先謝謝各位了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.146.81.191
1F:→ uziel:為何不用其他資料型別,例如 short 、 int ? 09/27 21:53
2F:→ gimmy731031:因為byte不會有字元集不同,造成轉換錯誤的問題 09/27 22:57
3F:→ gimmy731031:short以兩個byte儲存.須另外切割;int無法減少儲存空間 09/27 23:01
4F:→ uziel:若要儲存文字資料,那應該用 char、String 09/28 21:34
5F:→ gimmy731031:感謝各位大大,已找到原因,varchar無法塞入負值, 09/28 23:42
6F:→ gimmy731031:byte亦不能更改值域,若要正確讀取要用DB Raw Type 09/28 23:45
7F:推 lovdkkkk:印象中要存無號數就是用大一級的 type 存取出時再轉 09/28 23:52
8F:→ lovdkkkk:利用精確度的損失取得原本想要的無號數的值 09/28 23:54
9F:→ lovdkkkk:很鳥的方法 不過好像也只能這樣... 09/28 23:54