java mysql 数据库中存储的是16进制,为什么取出来是十进制,怎么办

java mysql 数据库中存储的是16进制,为什么取出来是十进制,怎么办,第1张

你可以把十六进制当成字符存到数据库中(数据库里面用varchar),取出来的时候getString

,然后在java程序里面处理,比如说将得到的字符串打碎成char,然后调用十六进制的那个静态的parseXXX方法强转

要看你是什么编码。

如果是ASC码那么就是8位2进制一个字符,也就是两个十六进制位。

所以,你可以将这个十六进制字符串除0x以外,两位一组,每一组可以使用CHAR(0x0C)的方式转换为字符,再串加在一起就行了。

如果是UNICODE字符,那么就是4位十六进制(16位二进制)一组进行转换。

如第一个字符就是:select nchar(0x0C45),第二个字符就是select nchar(0x0000)

//字符串转换成16进制

function str2hex($str){

$hex = ''

for($i=0,$length=mb_strlen($str)$i<$length$i++){

$hex .= dechex(ord($str{$i}))

}

return $hex

}

//16进制转换成字符串

function hex2str($hex){

$str = ''

$arr = str_split($hex, 2)

foreach($arr as $bit){

$str .= chr(hexdec($bit))

}

return $str

}

function test(){

//utf8字符测试

$str = '中文'

echo mb_strlen($str)

echo ''

$hex = str2hex($str)

echo $hex

echo ''

$dec = hex2str($hex)

echo $dec

echo ""

echo "<hr>"

//gbk测试

$gbkstr = mb_convert_encoding($str,'GBK','UTF-8')

echo mb_strlen($gbkstr)

echo ''

$hex = str2hex($gbkstr)

echo $hex

echo ''

$dec = mb_convert_encoding(hex2str($hex), 'UTF-8', 'GBK')

echo $dec

echo ""

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6874375.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存