bit en java

3 views
Skip to first unread message

Cesar Casas

unread,
Oct 31, 2012, 3:32:16 PM10/31/12
to weban...@googlegroups.com
Estoy con un bardito, y me gustaria ayuda de ustedes.

Tengo que procesar datos que vienen en 16 bytes, pero la estructura de datos esta dividida en bits.

Por ejemplo, los primeros 20 bites indican fecha y hora a partir de los domingo a las 00, los siguientes 4 bites estan vacios, o sea a cero. Eso son los primero 3 bytes.

Los proximos 4 bites indican otro datos, y los 4 bits restantes indican vacio (cero).

Y asi sigue la cosa.

Son datos que me vienen por UDP (que opera a nivel bits)  y tengo que "parsear" los bytes para operar a nivel bit sabiendo la estructura de datos.

Bien, todo esto lo tengo que hacer en node. Se como usar los operadores a nivel bits, pero si alguno conoce alguna lib o algo donde le pasas los bytes y te los divide en bits en base a la estructura que uno necesite (completando lo que haga falta a nivel bits, desplazando digamos los ceros necesarios para completear el byte) bienvenido sea.

O quizas alguna experiencia en este tema.

Saludos.



--
Cesar Casas
Tec. Sup. Telecomunicaciones
Web 2.0 Ninja, DBA
SEO/SEM Expert.


Cesar Casas

unread,
Oct 31, 2012, 3:37:14 PM10/31/12
to weban...@googlegroups.com
Aclaro que JS opera a 32bits por byte

2012/10/31 Cesar Casas <lortm...@gmail.com>

Demián Andrés Rodriguez

unread,
Oct 31, 2012, 3:48:05 PM10/31/12
to weban...@googlegroups.com
WTF? un byte son 8 bits en cualquier lado, que un entero en JS sean 4 bytes es distinto.
La clase Buffer no te sirve? podes leer bit x bit.

2012/10/31 Cesar Casas <lortm...@gmail.com>
--
-------------------------------------------------------------------
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/webandbeer?hl=es.
El blog del grupo
http://www.webandbeer.com.ar

Cesar Casas

unread,
Oct 31, 2012, 3:55:03 PM10/31/12
to weban...@googlegroups.com
La clase buffer la estoy viendo ahora

2012/10/31 Demián Andrés Rodriguez <demi...@gmail.com>



--
Cesar Casas
CTO
ce...@radiobeta.com
Skype: lortjava

RadioBeta.com - Your tune to the world!

Cesar Casas

unread,
Oct 31, 2012, 4:18:31 PM10/31/12
to weban...@googlegroups.com
Cla, me referia a los enteros (sory, tengo un dia de la muerte hoy) a lo que voy es que en teoria recibo data en formatos N y el parseInt o el toString (que son la forma de obtener binarios o hexa) me dan dolor de cabeza. Tengo que armar todo a enteros y caracteres para recien ahi procesar la info.



2012/10/31 Cesar Casas <ce...@radiobeta.com>

Tio Oscar

unread,
Oct 31, 2012, 5:27:18 PM10/31/12
to weban...@googlegroups.com
Para procesar bits diferenciales se usan strings, (cadenas de chars o chars unsigneds), Buffer, es un array de bytes, no de bits, que tambien se diferencia de los chars multibyte (uchars). Igualmente te sirve ya que Buffer acepta trabajar tanto a con bytes (chars) como con chars multibytes. para eso:

var i, buf;
var sbinary = '';

buf = new Buffer(data);

for (i = 0; i <= buf.lenght; i++) {
     sbinary += buf[i].toString(2);
}

var fecha = parseInt(sbinary.substr(0,20),2);

Bueno lo escribi asi nomas, pero se entiende, se puede hacer una clase copada.
El Tio ~ Programador, hacker y filósofo
web: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogentilezza
Twitter: @exos, Indeti.ca: @exos
Tels: [+54 11] 638-LINUX (54689) - [+54 9 11] 6133-2442

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/IT d-- s:++ a- C+++$ UBL+++$ P(-) L+++$ !E--- W+++$ !N !o K-? !w--- !O !M-- V? PS+++@ !PE Y+(++) PGP++ !t--- !5 X++ R(+) tv--? b- DI D-- G e@ h>++ r+++(-) y+++>+++++
------END GEEK CODE BLOCK------

Cesar Casas

unread,
Nov 1, 2012, 1:10:26 AM11/1/12
to weban...@googlegroups.com
Al final arme el code en clases y me di cuenta que era por el camino que indicaba Oscar.

Aca va lo que arme rapidamente, me sirve para procesar lo que me envian.


var managerBits = {
Chars: ""
,Bits: ""
,Hex: ""
,load: function(data){
var _this = this;
this.Chars = data;
buffer = new Buffer(data);
for (var x = 0; x < buffer.length; x++) {
var bits = buffer[x].toString(2);
var hex  = buffer[x].toString(16);
_this.Bits+=bits.toString();
_this.Hex+=hex;
 
}
return _this;
}
,toDecimal: function(N){
var _this = this;
return N.indexOf("1",0)>=0?Math.pow(2,N.length-N.indexOf("1",0)-1)+_this.toDecimal(N.substring(1+N.indexOf("1",0),N.length)):0
}
,get: function(init, end){
_this =this;
return _this.Bits.substr(init, end);
}
,show:function(){
var _this=this;
console.log(_this.Bits);
return _this;
}

};



var myBits = managerBits.load("zapatos de calabaza");

console.log(myBits.Bits);
console.log(myBits.Hex);

console.log(myBits.toDecimal(myBits.get(0,19)));






2012/10/31 Tio Oscar <tio...@gmail.com>

Cesar Casas

unread,
Nov 1, 2012, 4:33:34 AM11/1/12
to weban...@googlegroups.com
Fe de errata. Aca va la version modificada para que siempre haga que los bytes tengan 8 bits, y ya la deje para node.


exports.managerBits = {
Chars: ""
,Bits: ""
,Hex: ""
,load: function(data){
var _this = this;
_this.Chars = data;
_this.Bits = "";
_this.Hex = "";
console.log(typeof(data));
buffer = new Buffer(data);
for (var x = 0; x < buffer.length; x++) {
var bits = buffer[x].toString(2);
var hex  = buffer[x].toString(16);
bits = ("00000000"+bits).slice(-8);
_this.Bits+=bits;
Tec. Telecomunicaciones
WebMaster / DBA
Consultor IT

Tel: +5411-4156-0301

Demián Andrés Rodriguez

unread,
Nov 1, 2012, 6:26:25 AM11/1/12
to weban...@googlegroups.com

No será BitManager?

__________
Enviado desde mi StarTAC 96 con antena larga.

Cesar Casas

unread,
Nov 1, 2012, 5:49:53 PM11/1/12
to weban...@googlegroups.com

Me gusta mas asi.... por la retorica viteh

Javier Alvarez

unread,
Nov 1, 2012, 7:54:01 PM11/1/12
to weban...@googlegroups.com
En ningun momento usas una funcion aninima en la que no funque this. Igual si hubiese, bindealo, cabeza! :P
Javier Alejandro Alvarez

Cesar Casas

unread,
Nov 1, 2012, 10:07:04 PM11/1/12
to weban...@googlegroups.com

Loco, la arme rapido para lo que necesita, la idea no era ponerla publica y bonita.
Villa++ = efectividad

Reply all
Reply to author
Forward
0 new messages