作者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