Loading
Loading
Приводит значение к типу word или создает значение типа word из двух байт.
Синтаксис
word(x) word(h, l)
Параметры
x: значение любого типа
h: старший байт (левая часть) значения word
l: младший байт (правая часть) значения word
Возвращаемые значения
word
В соответствии со ст. 1259 ГК РФ все материалы данного сайта являются объектом авторского права. Исключительные права на его использование принадлеждат владельцу данного сайта, согласно п.1 ст.1229 ГК РФ. Любое копирование материалов данного сайта без разрешения владельца сайта запрещено законом.
© АрдуиноПлюс.ру, 2017—2022 (29–0,052)
The getBytes() function helps copy the content of a String to a byte array. The syntax is −
string1.getBytes(buf,len)
where,
-
string1 is the string whose content you want to copy to a byte array,
-
buf is the byte array, and
-
len is the length of content to be copied.
Example
The following example illustrates how to use this function −
byte buf[10]; void setup() { Serial.begin(9600); Serial.println(); String s1 = "Hello World"; s1.getBytes(buf, 5); for (int i = 0; i < 10; i++) { Serial.println(buf[i]); } } void loop() { }
Output
The Serial Monitor output is shown below −
As you can see, the characters have been copied into the byte array. 72 corresponds to the decimal value of ‘H’ as per the ASCII code, 101 corresponds to the decimal value of ‘e’ and so on.
Note that, although the value for len was specified as 5, the bytes of only 4 characters were copied. This indicates that the last byte is intentionally kept as 0 to indicate string termination. You can try setting other values for len, and you’ll get a similar result. The last byte will be kept as 0.
Как из строки получить байт массив?
Offline
Зарегистрирован: 22.09.2012
Имеется Ардуино+Ethenet shield. Хочу динамически изменять ip в зависимости от того, что придет на вход порта.
Вся проблема кроется в том что входная строка имеет тип String, а метод Ethernet.begin принимает на вход byte array. В общем никак не пойму как эту строку правильно сконвертировать. Пытался сделать велосипед, переведя строку в char array, а потом уже в byte array. Не получилось.
#include <SPI.h> #include <Ethernet.h> String readString; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address //byte ip[] = { 192, 168, 1, 102 }; // ip in lan assigned to arduino //byte gateway[] = { 192, 168, 1, 1 }; // internet access via router //byte subnet[] = { 255, 255, 255, 0 }; //subnet mask byte myserver[] = { 208, 104, 2, 86 }; // zoomkat web page server IP address EthernetClient client; ////////////////////// void initEthernetConfig(byte ip[]) { Ethernet.begin(mac, ip); //Ethernet.begin(mac, ip, subnet, gateway); Serial.begin(9600); Serial.println("Better client test 12/01/11"); // so I can keep track of what is loaded Serial.println("Send an e in serial monitor to test"); // what to do to test } void setup(){ byte ip[] = { 10, 28, 33, 4 }; // initEthernetConfig(ip); } void loop(){ // check for serial input while (Serial.available()) { char c = Serial.read(); //gets one byte from serial buffer readString += c; //makes the String readString delay(2); //slow looping to allow buffer to fill with next character } if (readString.length() >0) { byte inArray[4]; char * tokens; int i = 0; tokens = strtok(readString, "."); while (tokens != NULL) { inArray[i] = atoi(tokens); tokens = strtok(NULL, "."); i++; } initEthernetConfig(ip); } }