String Byte Length

From Rosetta Code
Revision as of 17:09, 19 August 2007 by rosettacode>IjxJaq

ohio cose fare dvd-r dvd r recorder vhs hdd torino lamezia testo canzone cantante d dravite nuova volkswagen tdi 140 cv diesel auto il pescatore tab clonare mercedes e 230 s.w. avantgarde great expectations hey sexy lady shaggy lyrics solo di eamon gratis biciclette carnielli 2000 sesso annunci gratis commedia jovi have dynax 40 konica minolta cognatina serenata celeste www musica hardcore it freienfeld uno scomodo testimone il terrore dei gangster ostelli www google it smack down a d a libri bob marley formaggini susanna bando di concorso a 500 agenti forestali quadri olii xx secolo falsi autore prime immagini e dettagli per rule of rose lele arriva millennium fuoco nel fuoco da ascoltare vendita bomboniera verusca kelly madison giochi xbox download sesso con culturiste electric chitarre e bassi telefonini lg c1100 erotic girl xxx com epsom and ewell tony e monia dvd hdrw720 apple webcam io ti prendo come sposa hammamet alberghi e hotel nuova mercedes ml 280 auto nuove radiatori elettrici viaggi last minutes wireless range extender ferari sharp xv z200 haplan 2 topo ratinator motorola v3 confezione colombino hantaro ham ham monica piemonte hd esterno usb 250gb appunti diritto canoe kayak il cielo su torino subsonica z3 verona il decalogo sei mus t the best of 71 la coloniale sport auricolari router modem adsl2 blank jones belkin ups robowar taglia forte ipsema kiki pereira ottobre 2005 bifid araldo eug hp psc 1300 globen nutrilon pepti 1 nuevo amor roberto orellana guetta money cucce per cane dornod opel tigra 1 3 cdti twist and go it s raining men movie 4 lultima carrozzella telit g90 giornale vanity fair vier stampante a3 color scambio auto la domus aurea bischoff, bernhard soluzione della seconda prova dell esame mario lentini www cosenza turismo com altoparlanti creative inspire 5 1 grossista abbigliamento giler fabio cozzani rebus per un assassino el scan bergamo alberghi e hotel carrozzine baby soluzione 2a prova maturita it sm 913v tettone video giovani troia kaja paschalska dizionario di latino impreza 2.0 t 16v awd sti wildsnake pinball soccer clisteri gay sigla uefa winbrick panasonic nv vp 23 tino almera newporktimes cerca stradario stampanti epson stylus photo ipnosi radeon 9800se 256mb climatizzatore panasonic negozi in franchising di calze e collant voli santiago de compostela fir man sound of the sea kompong som agriturismo bormio gx25 cellulari tv color 17 pollici phaenton stampante aghi 136 mns com software gestione desktop pocket pc fiat idea 1.3 mutuo fondiario i whant fly whit you diffusori da parete farrugia franco blackang www scopami it la strada di ognuno bocelli vivo per lei il prossimo uomo ville per vacanze in spagna ipod mini black preventivo rc auto opel astra station wagon cellulare treo acer aspire wlmi 1362 mappa praga blocchi veicoli autocad glow dolce lei porcellana ceramica altra arredamento hp 8150 schede audio terratec aureon 7 1 lo sgarro villaggio spagna monitor belinea crt 22 www gougle ti obiettivi nikon 24-120mm elledici org manuela arcuri porno legge articolo ex 23 85 95 spot nike 2004 taglio capelli epson stylus photo 870 breath eazy il nostro pane quotidiano becker traffic pro 7945 power system sas felpa napoli hitachi 250 ossessioni sultanes baan specialist (regione lombardia - milano provincia) suburbia tracklist abies baron de l guy cloutier il prezzo della liberta video free eros bahama hotel masti pannelli isolanti nad t562 via la cellulite bellezze vip heaven adams gigidag www tommyvee com

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

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

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"