Return-Path: X-Original-To: apmail-commons-issues-archive@minotaur.apache.org Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 124B010F33 for ; Sun, 26 Jan 2014 21:27:02 +0000 (UTC) Received: (qmail 79402 invoked by uid 500); 26 Jan 2014 21:25:00 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 79285 invoked by uid 500); 26 Jan 2014 21:24:48 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 74563 invoked by uid 99); 26 Jan 2014 21:21:38 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 26 Jan 2014 21:21:38 +0000 Date: Sun, 26 Jan 2014 21:21:38 +0000 (UTC) From: "Duncan Jones (JIRA)" To: issues@commons.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (LANG-341) [NumberUtils] Please add number <> byte[] methods MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/LANG-341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13882429#comment-13882429 ] Duncan Jones commented on LANG-341: ----------------------------------- The patch looks good, thank for submitting and apologies that it's laid stagnant for so long. If you are willing, it would be easier to get this into trunk if you submit an [Individual Contributor License Agreement|http://www.apache.org/licenses/#clas] to avoid any doubts over IP issues with this code. bq. Should we check the buffer length? (in addittion to the null checking) Yes. Much better to have an {{IllegalArgumentException}} with a clear message than attempt to access an invalid array index. bq. Should we add other methods with a default value? (toPrimitive(byte[] buff, primitive default)) In what situation would the default value be used? Finally, if you wanted to add Javadoc comments to the non-test methods that would save us a little bit of work when it comes to adding this. > [NumberUtils] Please add number <> byte[] methods > ------------------------------------------------- > > Key: LANG-341 > URL: https://issues.apache.org/jira/browse/LANG-341 > Project: Commons Lang > Issue Type: New Feature > Components: lang.math.* > Reporter: Lilianne E. Blaze > Fix For: Review Patch > > Attachments: 341-v1-src.patch, 341-v1-test.patch, LANG-341-2.patch, LANG-341.patch > > > Hello, > I need a set of methods to convert Long to or from a byte[] array, as if > writing / reading from Data(Input/Output)Stream( > ByteArray(Input/Output)Stream ). > First, doing it with Streams seems a bit wasteful, second, it seems a > pretty general use. Would it be possible to add something like that to, > for example, > org.apache.commons.lang.math.NumberUtils? > Example code: > {code:java} > static public long toLong(byte[] b) > { > return toLong(b, 0); > } > > static public long toLong(byte[] b, int offset) > { > return (((long)b[offset] << 56) + > ((long)(b[offset + 1] & 255) << 48) + > ((long)(b[offset + 2] & 255) << 40) + > ((long)(b[offset + 3] & 255) << 32) + > ((long)(b[offset + 4] & 255) << 24) + > ((b[offset + 5] & 255) << 16) + > ((b[offset + 6] & 255) << 8) + > ((b[offset + 7] & 255) << 0)); > } > > static public byte[] longToByteArray(long l) > { > byte b[] = new byte[8]; > longToByteArray(l, b, 0); > return b; > } > > static public void longToByteArray(long l, byte b[], int offset) > { > b[offset] = (byte)(l >>> 56); > b[offset + 1] = (byte)(l >>> 48); > b[offset + 2] = (byte)(l >>> 40); > b[offset + 3] = (byte)(l >>> 32); > b[offset + 4] = (byte)(l >>> 24); > b[offset + 5] = (byte)(l >>> 16); > b[offset + 6] = (byte)(l >>> 8); > b[offset + 7] = (byte)(l >>> 0); > } > {code} -- This message was sent by Atlassian JIRA (v6.1.5#6160)