看板 java 關於我們 聯絡資訊
各位先進大家好,小弟遇到一個問題相當疑惑, 想請問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
uziel:為何不用其他資料型別,例如 short 、 int ? 09/27 21:53
gimmy731031:因為byte不會有字元集不同,造成轉換錯誤的問題 09/27 22:57
gimmy731031:short以兩個byte儲存.須另外切割;int無法減少儲存空間 09/27 23:01
uziel:若要儲存文字資料,那應該用 char、String 09/28 21:34
gimmy731031:感謝各位大大,已找到原因,varchar無法塞入負值, 09/28 23:42
gimmy731031:byte亦不能更改值域,若要正確讀取要用DB Raw Type 09/28 23:45
lovdkkkk:印象中要存無號數就是用大一級的 type 存取出時再轉 09/28 23:52
lovdkkkk:利用精確度的損失取得原本想要的無號數的值 09/28 23:54
lovdkkkk:很鳥的方法 不過好像也只能這樣... 09/28 23:54