String Byte Length

From Rosetta Code
Revision as of 01:55, 2 September 2007 by rosettacode>IjxJaq

jason robards www pitneybowes com divieto di scaricare musica palm gprs www cmp it viareggio casa vacanza affitto volkswagen golf 1 8 gti di demain ferro da stiro stirella mistral atlantis land modem residence blu marine upload center bacicci log a jaguar s type 2.7 d mutuo fondiario roland exr-5s my guitar gentle finestra mansarde stereo 2000 marcon nb hp nx6110 - pm 740 istituti mariachi andino extender canon escape for island iliona fermer se dossier mouse optical 250s trust scola univ montpellier 3 roadhouse blues eurogoal www irre lombardia it portfolio shadow of fear casse per lettori mp3 portatili graduatoria permanente docenti lampada gas r i p shut up accessori per telescopio lectura video scandalo heidi futbol club barcelona mas flow tariffe telecom haiducii dragostea din tei il sali industriali bando korrupto toshiba m200 755 crocodile adventure rs- mmc 256 al 1722hs the pirates feat shola ama www maxpezzali com nightmare creatures 2 cavalli che cantano lavoro a monopoli toner 4216f samsung loghi cellulare neviano degli arduini kanin box esterno firewire 800 re rosanna geforce nvidia gradient 50 cps 5 mg samsung dvd-p355 il lamento di epicuro download tumble pop batteria videocamera sony airline discount ticket videotelefonia video fabrizio quatrocchi delonghi o 191 nike max air maury brain-trust lione richie lavorazione tubi rame david caruso www sexo sexo com mx google fa hardware usb car stereo ricarica e bay mada valgo sin tu amor oh boy bluetooth autoradio segnala un sito volo follonica mario winans feat enya e deddy raccoglitori archivio oriental hentai cartoline amicizia moto film hung up da scaricare veneto francobolli decapitazione ostaggi iraq video hot party 2001 furore cieco lavaggio modulistica per associazioni o inverter 12 mare in tempesta gta2 toys center gem wk1 costa crociera lavoro corpo foresta grosso cazzo tumore ossa cani sintomi palmare hp satellitare tre cumpar i don t to back torino lamezia oggetti the sims semsa suljakovic opel astra 1.9 cdti cosmo tasti di winning eleven 8 isis avent traduzione testo this love maroon5 gungrave overdose kaviar xg flash miguel enriquez maria morena hp designjet 800ps 42 goethe, johann wolfgang goodbye new york dragostea sesso lesbo gratis video decapitazione ostaggio inglese traduzione dei 3 doors down like humans do canzoni cd m2o mappa stradale dell italia granata seconda pelle buffalo ristorante sms dolci il lupo negozi one line toshiba 21 inserzioni di lavoro gratuito usb 802 11g adapter cavo usb stampanti foto paola perego www my siemens com balla baby video clip sesso con animali vivienne westwood la grande famiglia sexy beach orquesta billos yitzhak rabin subzero la paz entre peru ecuador blaupunkt travelpilot e1 honda accord 2.4 peschiera segreteria libero it laid back architetura el pais uruguay hercules console dj polno it la canzone dei nibelunghi camera vimodrone il corriere di ferro volkswagen polo fun grana usb key mp3 biker boyz 2 film dvd onkyo tx-l55 jetflash mp3 contratto terapisti della riabilitazione isuzu d-max foto e video di sesso valentina g uomini e behind the blue eyes music videos english testo canzoni di sere nere co dobre asus a8n-deluxe crediti scolastici vecchion sergio sgrilli video de pluma pluma gay pornovideogratis singole over 45 inno carabinieri multifunzione samsung 4216f gerhard winkler www f s it inkontri com cellulare (telecomunicazioni) sigma ex 17 - 35 motori elettrici e parti burzum quiero bailar mais uma vez centrale diffusori la voce del viso cicken little semana santa en guatemala fiano victoria becham kyosho mp ditte traslochi cd windows xp whirlpool at terapia trasfusionale crisis city barzelletta piccanti incontri sexy gratuiti gps palmare hpcompaq palmari shinco pmp everytime britney spear jvc videoregistratore viaccess tv keys concorsi per laureati in sociologia esselte 5121 fracchia la belva waiblinger wilhelm friedrich orchestra giorgio villani baila con migo www addmusic it prenotazione albergo lisbona hulk4 morrone aldo il figlio della sepolta viva bad credit personal loan ecs schede madri liceali al pompino lavatrice doppio flusso guscio comida china ilsole24ore com norme vico giuseppe libri olimpus 80 final fantasy x registratore portatile cd baby pozzi a fica aperta at italia a colpi di karate univision chicago lavastoviglie rex rt 65 fivelandia 10 immagini sesso il gladiatore dvd salvini gioiello costruzioni meccaniche negro duele el amor testimonios cozzens james gould dead or alive 2 masterizzatori dvd iomega bikers lettore dvd samsung dvi d m 198 del 23 10 2003 dio ha visitato giacomo leopardi shila michel viet fotos il mondo inseme a te trilogy star wars www import r com mediasetpremium prestito subito nick carter desnudo la canzone del ciuccio nightmare cofanetto riforma codice procedura civile cordless dect telecom fuga in paradiso pron pps juanes mp3 www school party 2004 tk nugoro panasonic dmcfz5eg emporio armani cd chitarra les paul scheda madre socket 754 ax 4x4 el sudcaliforniano donne mature yacht grande fartello tutti gli uomini di sara vacanza cina uno fire ferrarese aldo kramatorsk girly night out ful penna gel immaggini compleanno gf 6600 256 mb ginevra albergo creme rassodanti corpo biglietto vincenti lotteria italia 2005 benetton franchising nick bern lavatrice candy aquamatic casse kit home cinema michelle ramazzotti studio madico dermatologico genova riforma del codice di procedura civile libro bimbo il gusto del vino foto ostaggi nepalesi gunny bunny pranzo al ritz mx150 plantronics m i a the end volare mp3 www actionchat dm 12 4 96 karma malo www via michelin it singole maggiorate il drago degli abissi trani italia ovni biglietti per concerto incontro lerici nokia 6610i mms univison com gojko mitic leticia spiler adler thermae com brother mfc 7420 celebridades lesbianas congedo parentale florida mappa everyone be somebody voli per djerba kaitec top66 supporto per palmari da auto el confidente mercedes c 250 td esprit il presagio indios tabajara mutuo fisso tastiera ad infrarossi gl wireless sd jun kunimura atack caricabatteria nimh dural spa trasmissione dati cerco cavalli colin firth riscaldamento casa allison and williams la genesi di un maestro gps tomtom nokia 6600 hanno ucciso il gioco calcio mp3 tv sony plasma 42 pollici saucony grid el oro media hard disk e floppy barreto jr boris karloff foto uomini col cazzo duro il messaggio di mettete dei fiori nei vostri cannoni virginia ristorante il primo premio si chiama irene world golf in english corsi rumba torino apple dock fotocamere yakumo salvados por la campana kiloutou oakley accessori la figa di monica bellucci executive service kesenai tsumi how would u feel teen sex videos comune di treviso bari vibo valentia telecomando meliconi foto offspring lettori audio mp3 il cuore come amore duel masters vol 2 revolucion micro maniacs inmortal fotos de claveles www cinema ugc fr i manga a 128 bit gadget sportivi java free www ciee org br winzip per windows xp incredimail gutterball universita dams jeonju pentax optio mx grand theft auto psp le metropole

This task has has been split off from another task. Its programming examples are in need of review to ensure that they fit the requirements of the new task.
Task
String Byte Length
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the goal is to find the byte length of a string. This means encodings like UTF-8 may need to be handled specially, as there is not necessarily a one-to-one relationship between bytes and characters, and some languages recognize this.

For character length, see String Character Length.

4D

$length:=Length("Hello, world!")

ActionScript

myStrVar.length()

Ada

Compiler: GCC 4.1.2

Str    : String := "Hello World";
Length : constant Natural := Str'Length;

AppleScript

count of "Hello World"

AWK

From within any code block:

w=length("Hello, world!")      # static string example
x=length("Hello," s " world!") # dynamic string example
y=length($1)                   # input field example
z=length(s)                    # variable name example

Ad hoc program from command line:

echo "Hello, world!" | awk '{print length($0)}'

From executable script: (prints for every line arriving on stdin)

#!/usr/bin/awk -f
{print"The length of this line is "length($0)}

C

Standard: ANSI C (AKA C89):

Compiler: GCC 3.3.3

 #include <string.h>

 int main(void) 
 {
   const char *string = "Hello, world!";
   size_t length = strlen(string);
          
   return 0;
 }

or by hand:

 int main(void) 
 {
   const char *string = "Hello, world!";
   size_t length = 0;
   
   char *p = (char *) string;
   while (*p   != '\0') length  ;                                         
   
   return 0;
 }

or (for arrays of char only)

 #include <stdlib.h>
 
 int main(void)
 {
   char const s[] = "Hello, world!";
   size_t length = sizeof s - 1;
   
   return 0;
 }

C

Standard: ISO C (AKA C 98):

Compiler: g 4.0.2

 #include <string> // note: not <string.h>
 
 int main()
 {
   std::string s = "Hello, world!";
   std::string::size_type length = s.length(); // option 1: In Characters/Bytes
   std::string::size_type size = s.size();     // option 2: In Characters/Bytes
   // In bytes same as above since sizeof(char) == 1
   std::string::size_type bytes = s.length() * sizeof(std::string::value_type); 
 }

For wide character strings:

 #include <string>
 
 int main()
 {
   std::wstring s = L"\u304A\u306F\u3088\u3046";
   std::wstring::size_type length = s.length() * sizeof(std::wstring::value_type); // in bytes
 }

C#

Platform: .NET Language Version: 1.0

string s = "Hello, world!";
int clength = s.Length;  // In characters
int blength = System.Text.Encoding.GetBytes(s).length; // In Bytes.

Clean

Clean Strings are unboxed arrays of characters. Characters are always a single byte. The function size returns the number of elements in an array.

import StdEnv

strlen :: String -> Int
strlen string = size string 

Start = strlen "Hello, world!"

ColdFusion

  #len("Hello World")#

Common Lisp

  (length "Hello World")

Component Pascal

  LEN("Hello, World!")

Forth

Interpreter: ANS Forth

Strings in Forth come in two forms, neither of which are the null-terminated form commonly used in the C standard library.

Counted string

A counted string is a single pointer to a short string in memory. The string's first byte is the count of the number of characters in the string. This is how symbols are stored in a Forth dictionary.

 CREATE s ," Hello world" \ create string "s"
 s C@ ( -- length=11 )

Stack string

A string on the stack is represented by a pair of cells: the address of the string data and the length of the string data (in characters). The word COUNT converts a counted string into a stack string. The STRING utility wordset of ANS Forth works on these addr-len pairs. This representation has the advantages of not requiring null-termination, easy representation of substrings, and not being limited to 255 characters.

S" string" ( addr len)
DUP .   \ 6

Haskell

Interpreter: GHCi 6.6, Hugs

Compiler: GHC 6.6

strlen = length "Hello, world!"

IDL

Compiler: any IDL compiler should do

 length = strlen("Hello, world!")

Java

Java encodes strings in UTF-16, which represents each character with one or two 16-bit values. The length method of String objects returns the number of 16-bit values used to encode a string, so the number of bytes can be determined by doubling that number.

String s = "Hello, world!";
int byteCount = s.length() * 2;

An other way to know the byte length of a string is to explicitly specify the charset we desire.

String s = "Hello, world!";
int byteCountUTF16 = s.getByte("UTF-16").length;
int byteCountUTF8  = s.getByte("UTF-8").length;

JavaScript

JavaScript encodes strings in UTF-16, which represents each character with one or two 16-bit values. The length property of string objects gives the number of 16-bit values used to encode a string, so the number of bytes can be determined by doubling that number.

var s = "Hello, world!";
var byteCount = s.length * 2; //26

JudoScript

 //Store length of hello world in length and print it
 . length = "Hello World".length();

Lua

Interpreter: Lua 5.0 or later.

 string="Hello world"
 length=#string

mIRC Scripting Language

Interpreter: mIRC

alias stringlength { echo -a Your Name is: $len($$?="Whats your name") letters long! }

OCaml

Interpreter/Compiler: Ocaml 3.09

String.length "Hello world";;


Perl

Interpreter: perl 5.8

Strings in Perl consist of characters. Measuring the byte length therefore requires conversion to some binary representation (called encoding, both noun and verb).

use utf8; # so we can use literal characters like ☺ in source
use Encode qw(encode);

print length encode 'UTF-8', "Hello, world! ☺";
# 17. The last character takes 3 bytes, the others 1 byte each.

print length encode 'UTF-16', "Hello, world! ☺";
# 32. 2 bytes for the BOM, then 15 byte pairs for each character.

PHP

 $length = strlen('Hello, world!');

PL/SQL

DECLARE
  string VARCHAR2( 50 ) := 'Hello, world!';
  stringlength NUMBER;
BEGIN
  stringlength := length( string );
END;

Pop11

Currently Pop11 supports only strings consisting of 1-byte units. Strings can carry arbitrary binary data, so user can for example use UTF-8 (however builtin procedures will treat each byte as a single character). The length function for strings returns length in bytes:

lvars str = 'Hello, world!';
lvars len = length(str);

Python

Interpreter: Python 2.4

length = len("The length of this string will be determined")

Ruby

 string="Hello world"
 print string.length

or

 puts "Hello World".length

Scheme

 (string-length "Hello world")

Smalltalk

 string := 'Hello, world!".
 string size.

Standard ML

Interpreter: SML/NJ 110.60, Moscow ML 2.01 (January 2004)

Compiler: MLton 20061107

val strlen = size "Hello, world!";

Tcl

Basic version:

 string bytelength "Hello, world!"

or more elaborately, needs Interpreter any 8.X. Tested on 8.4.12.

 fconfigure stdout -encoding utf-8; #So that Unicode string will print correctly
 set s1 "hello, world"
 set s2 "\u304A\u306F\u3088\u3046"
 puts [format "length of \"%s\" in bytes is %d"  $s1 [string bytelength $s1]]
 puts [format "length of \"%s\" in bytes is %d"  $s2 [string bytelength $s2]]

Toka

This will include the terminating 0 in the length.

 " hello, world!" count 

UNIX Shell

With external utilities:

Interpreter: any bourne shell

 string='Hello, world!'
 length=`echo -n "$string" | wc -c | tr -dc '0-9'`
 echo $length # if you want it printed to the terminal

With SUSv3 parameter expansion modifier:

Interpreter: Almquist SHell (NetBSD 3.0), Bourne Again SHell 3.2, Korn SHell (5.2.14 99/07/13.2), Z SHell

 string='Hello, world!'
 length="${#string}"
 echo $length # if you want it printed to the terminal


VBScript

LenB(string|varname) 

Returns the number of bytes required to store a string in memory Returns null if string|varname is null

xTalk

Interpreter: HyperCard

 put the length of "Hello World"

or

 put the number of characters in "Hello World"