** S'il vous plaît vérifier la modifier au bas de ce post
J'ai un ByteBuffer [128 bits] [qui a] numéros que je dois convertir en BIGDECIMAL, binaire, chaîne puisque ceux-ci sont le mappage sql correspondant lors de l'utilisation de jdbc.ByteBuffer à BIGDECIMAL, binaire, chaîne
Y a-t-il une API de bibliothèque que je peux utiliser pour faire cela. Je vois String.valueOf() ne prend pas un tableau d'octets en tant que parameter.So je suis coincé à faire quelque chose comme ceci:
BigDecimal bd = new BigDecimal(bigmyBuffer.asCharBuffer().toString());
Cela ressemble à un hack pour moi?. Existe-t-il une meilleure façon de le faire ou plutôt de faire la partie jdbc de manière efficace. Je suis concentré sur faire des insertions dans les colonnes sql respectives à partir de maintenant.
Edit:
J'ai eu tort, les bytebuffers étaient pas seulement des chiffres, mais toutes sortes de bits. Alors maintenant, je dois prendre le tampon octet 128 bits et le convertir en 2 longs, puis fusionner en un bigdecimal afin que les chiffres conservent leur santé mentale. Donc, quelque chose comme ça: LongBuffer lbUUID = guid.asLongBuffer();
firstLong= lbUUID.get();
secondLong = lbUUID.get();
BigDecimal = firstLong + secondLong ;
Merci.
Thnx EboMike .. pouvez-vous s'il vous plaît expliquer quelle est la diff dans votre approche et mon .. Je n'arrive pas à voir comment il diffère en interne .. ce que je pense est premier octet tampon est converti en chars et puis il est enveloppé par l'objet chaîne ..does new String [bigmyBuffer] convertit octets en chaîne directement ou est-ce plus rapide etc? – codeObserver
En général, vous voulez éviter de créer des objets. Dans votre code, vous créez un jchararray temporaire, et à partir de là vous créez une chaîne temporaire (je ne suis pas sûr si la chaîne est capable d'utiliser le jchararray pour son buffer en interne - cela pourrait être le cas). Dans mon exemple, vous devez au moins sauter une étape. – EboMike
Je devrais qualifier cela - tout cela n'a d'importance que si vous en faites un tour. Sinon, la différence est minuscule, et il est plus important d'écrire du code compréhensible et facile à maintenir. Encore une fois, pour vraiment vous donner une réponse plus appropriée, j'aurais besoin de plus de contexte sur la façon dont tout cela est utilisé. – EboMike