Функция, описанная ниже , доступна на NPM :
blockquote>var b64toBlob = require('b64-to-blob')
Функция
atob
будет декодировать строку с кодировкой base64 в новая строка с символом для каждого байта двоичных данных.var byteCharacters = atob(b64Data);
Кодовая точка каждого символа (charCode) будет значением байта. Мы можем создать массив байтовых значений, применяя это, используя метод
.charCodeAt
для каждого символа в строке.var byteNumbers = new Array(byteCharacters.length); for (var i = 0; i < byteCharacters.length; i++) { byteNumbers[i] = byteCharacters.charCodeAt(i); }
Вы можете преобразовать этот массив байтовых значений в реальный типизированный массив байтов, пройдя это к конструктору
Uint8Array
.var byteArray = new Uint8Array(byteNumbers);
Это, в свою очередь, можно преобразовать в
Blob
, обернув его в массив, передающий его конструкторуBlob
.var blob = new Blob([byteArray], {type: contentType});
Выполняется код выше. Однако производительность может быть немного улучшена за счет обработки
byteCharacters
меньшими фрагментами, а не сразу. В моем грубом тестировании 512 байт кажется хорошим размером среза. Это дает нам следующую функцию.function b64toBlob(b64Data, contentType, sliceSize) { contentType = contentType || ''; sliceSize = sliceSize || 512; var byteCharacters = atob(b64Data); var byteArrays = []; for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { var slice = byteCharacters.slice(offset, offset + sliceSize); var byteNumbers = new Array(slice.length); for (var i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } var byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } var blob = new Blob(byteArrays, {type: contentType}); return blob; }
var blob = b64toBlob(b64Data, contentType); var blobUrl = URL.createObjectURL(blob); window.location = blobUrl;
Полный пример:
function b64toBlob(b64Data, contentType, sliceSize) { contentType = contentType || ''; sliceSize = sliceSize || 512; var byteCharacters = atob(b64Data); var byteArrays = []; for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { var slice = byteCharacters.slice(offset, offset + sliceSize); var byteNumbers = new Array(slice.length); for (var i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } var byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } var blob = new Blob(byteArrays, {type: contentType}); return blob; } var contentType = 'image/png'; var b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='; var blob = b64toBlob(b64Data, contentType); var blobUrl = URL.createObjectURL(blob); var img = document.createElement('img'); img.src = blobUrl; document.body.appendChild(img);
... или ES6:
'use strict'; const b64toBlob = (b64Data, contentType='', sliceSize=512) => { const byteCharacters = atob(b64Data); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { const slice = byteCharacters.slice(offset, offset + sliceSize); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } const blob = new Blob(byteArrays, {type: contentType}); return blob; } const contentType = 'image/png'; const b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='; const blob = b64toBlob(b64Data, contentType); const blobUrl = URL.createObjectURL(blob); const img = document.createElement('img'); img.src = blobUrl; document.body.appendChild(img);
Потребуется некоторое обучение и некоторое время, чтобы узнать, что стиль должен был разработать удобный в сопровождении код.
Происходя из Java/C#/C ++, у Вас, вероятно, есть хорошая идея хорошей программной архитектуры. Теперь просто необходимо изучить особенности LabView и распространенных ошибок.
Для основ Национальные Инструменты предлагают учебные курсы. Посмотрите, может ли Ваш новый работодатель отправить Вас к Основы класс I/II, чтобы намочить ноги. Они предлагают некоторые онлайн-курсы также. После классов можно подписаться для взятия тестов для сертификации.
Получите ознакомительную версию Labview от Национальных Инструментов; у них есть хорошо сохраняемый справочный файл, что можно погрузиться прямо в с включенным примером кода. Взгляд на "Начало работы" и "Среду LabVIEW". Необходимо смочь перейти прямо в и познакомиться с dev средой довольно быстро.
LabVIEW, будучи графическим хорош, но не выводите свои лучшие практики с точки зрения проектирования приложений. Распространено закончиться с кодом, бывшим похожим на радугу sphaghetti или код, который расширяет несколько широких экранов. Используйте subvi's и сохраните каждый vi с определенной целью и функцией.
Официальные форумы поддержки NI и база знаний являются, вероятно, лучшими ресурсами там в данный момент.
Неофициальные сайты как Учебные руководства в G имеют подмножество информации, найденной на официальном сайте и документации, но все еще могут быть полезны для перекрестной ссылки, если Вы застреваете.
Править: Основы I/II разработаны, чтобы быть доступными для пользователей без предшествующего опыта разработки программного обеспечения. В зависимости от того, как Вы ищете использование ощупью пробной версии, Вы можете перемещаться непосредственно в Промежуточный I/II. NI имеет содержания курса в наличии на их веб-сайте также, таким образом, Вы знаете то, что Вы собираетесь покрыть в каждом.
LabVIEW для Всех недавно пересмотрен и довольно всесторонний. Кроме свободного имеющегося в сети материала, это - вероятно, лучшее место, чтобы начать учить язык.
Руководство по стилю LabVIEW является замечательной книгой по тому, как организовать и расположить Ваш код и файлы для максимального преимущества.
Объектно-ориентированное программирование является недавним дополнением к LabVIEW. Отчет LVOOP объясняет много о том, как он работает и почему способ, которым это - способ, которым это.
Это немного устарело, но LabVIEW Усовершенствованные Методы программирования Горьким, Mohiuddin и Nawrocki все еще полон полезного материала.
Национальные Инструментальные форумы являются великолепным местом для движения для основной справки. LabVIEW усовершенствованные виртуальные архитекторы (LAVA) являются общественным форумом для усовершенствованных тем.
Учебные руководства в G, также проверьте webring.
- Adam
Официальную страницу поддержки NI и форумы поддержки трудно разбить.
Это действительно помогает наличию гуру вокруг для LabVIEW.
Когда я запустил с LabVIEW несколько лет назад, мне дали ссылку на LabVIEW Графический Ход Программирования. Это покрывает основы и наличие твердых знаний других языков программирования, я думаю, помог мне взять вещи быстро.
Я запустил бы с LabVIEW wiki.
А именно, Учебное руководство LabVIEW. Существует много ссылок онлайн и ссылок на справочники LabVIEW. Добро пожаловать в мир LabVIEW!
Я предложил бы, чтобы Вы запустили с LabVIEW для Всех. Это - хорошая книга, которая касается основ LabVIEW хорошо.
'Дуга, ненормальное' в значительной степени закрепило точно, что нужно попытаться сделать для изучения LabVIEW. Однако я не пропустил бы I Basic и II. Классы действительно преподают основные концепции программирования и приспособлены непрограммистам, однако они действительно покрывают IDE экстенсивно. LabVIEW IDE является странным прибытием из основанного на тексте языка и проведением времени в классе, узнавая, что это с преподавателем может действительно ускорить Ваше приобретение знаний.
Я пропустил бы Промежуточный 1, если Вы - закаленный разработчик. Промежуточная 1 попытка преподавать методы разработки программного обеспечения в промежутке трехдневного курса. Если Вы учитесь для получения CLD, необходимо знать курс и терминологию для экзамена, иначе я не провел бы свое время или капитал в курсе.
Подпишитесь на Информационный-LabVIEW список рассылки. Это имеет намного более тихий недавно как NI, и форумы ЛАВЫ стали еще популярнее, но это все еще читается некоторыми очень опытными и услужливыми людьми, включая людей в NI, и если Вы не можете найти то, в чем Вы нуждаетесь в другом месте затем, хороший вопрос будет обычно получать хороший ответ.
Руководство по стилю NI, так уже упомянутое, является хорошей ссылкой - перечитывает его, как Вы узнаете о большем количестве вещей, которые это покрывает, это содержит некоторый плотно упакованный хороший совет.
Персональные главные подсказки: посмотрите на предоставленный пример кода (хотя это не обязательно прекрасно); учитесь использовать очереди и notifiers как можно скорее; не погружайтесь в к использованию структур события и управляйте ссылками, пока Вы не выяснили то, что Вы можете и не можете обойтись без них; и начните с малого и простой - необходимо быть легко снова использовать этот код позже путем переупаковки его в subVI's как объем увеличений стремлений. И развлекайтесь!
Для меня лучший способ изучить LabVIEW - это проанализировать встроенные примеры. Лучшие форумы - это NI Developer Zone Community и LAVA Forums
С LabVIEW действительно легко работать, но сложнее всего знать, как спроектировать ваше приложение, чтобы оно не превратилось в спагетти. Когда вы освоите основы (например, вводный курс LabVIEW ), узнайте, как использовать шаблоны проектирования, события, очереди, определения типов и ссылки. Используйте модульную архитектуру, избегайте больших структур, попробуйте «написать» свой код в маленьком окне.
Также важно знать различия между версиями LabVIEW (полная / профессиональная и версия 7.1.1, 8.2, 8.5, 8.6, 2009 г.) ), как использовать систему контроля версий с vi (двоичными файлами) и как сохранить ваши файлы в проекте, чтобы вы могли легко повторно использовать любой код и быть «СУХИМ» (не